爬虫提前准备包
1)安装解析库lxml
lxml是python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高。
命令行进行安装:pip install lxml
2)requests库,安装:pip install requests

获取信息user-agent
User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

使用User-Agent可以将爬虫模拟成用户操作计算机,防止爬虫被封。而短时间进行大量访问也有可能被封掉,而自动生成UA可以有效解决这个问题。

进入2345影视:控制台打开获取user-agent

爬取2345影视经典电影信息,代码块如下

#coding:utf-8
import requests
from lxml import etree
from urllib.parse import urljoin  #url拼接
from getcsv import getcsv
def  get_html(url):'''获取源代码:param url::return:'''headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36"}response=requests.get(url,headers=headers)#response是2开头,即返回response,否则返回Nonereturn response.text if str(response.status_code).startswith("2") else None
def get_detail_url_list(url):'''获取电影详情页url:param url::return:'''#获取页面html=get_html(url)#如果没有获取页面,返回为空if not html:print("Response状态码不是200")return#解析获取的页面parser=etree.HTML(get_html(url))#获取详情页面的urldetail_urls=[urljoin(url,i) for i in parser.xpath("//ul[contains(@class,'v_picTxt')]/li/div[@class='pic']/a/@href")]#翻页去最后一页next_page_tag=parser.xpath("//div[@class='v_page']/a[last()]")#到最后一页,获取最后一页if next_page_tag:next_page_tag=next_page_tag[0]#如果next_page_tag文本有下一页(最后页是由下一页),就返回路径,否则返回为空next_page_url=urljoin(url,next_page_tag.attrib.get("href")) if "下一页" in next_page_tag.text else Nonereturn next_page_url,detail_urlsdef parse_detail(url):'''解析详情页的urlxpath定位是从1开始的:param url::return:'''html = get_html(url)if not html:print("Response状态码不是200")return#获取信息路径Etree=etree.HTML(html)title = "".join(Etree.xpath("//div[@class='tit']/h1/text()"))# print(type(title))score = Etree.xpath("//div[@class='tit']/p/em/text()")[0].replace("分", "")actor = " ".join(Etree.xpath("//ul[contains(@class,'txtList')]/li[contains(@class,'liActor')]/a/text()"))director = "".join(Etree.xpath("//ul[contains(@class,'txtList')]/li[@class='li_3']/a/text()"))introduction = "".join(Etree.xpath("//ul[contains(@class,'newIntro')]/li/p/span/text()"))# 多个list合并成一个listlist = [title,actor,director,introduction]#一个大的list每4个分割成1个listlists=list_split(list,4)# print(title)return lists
#切割列表
def list_split(items, n):return [items[i:i+n] for i in range(0, len(items), n)]
def spider():next_url = "https://dianying.2345.com/list/jingdian------.html"datas=[]# 详情页,下一页结果while next_url:next_url, urls = get_detail_url_list(next_url)# print(urls)# print(type(urls))for url in urls:# print(url)#添加数据在数组datasdatas.extend(parse_detail(url))# return parse_detail(url)return datasif __name__ == '__main__':import timedatas1=spider()path = 'data.csv'title = ['电影名', '演员', '导演', '简介']w_data = getcsv().write_csv(path, title, datas1)

getcsv.py 代码块如下:

#coding:utf-8
import csv
import os
#利用pandas包来按照列写入csv文件
import pandas as pdclass getcsv:def write_csv(self,file_path,title,datas):with open(file_path, 'a', encoding='utf-8', newline='') as f:# rows=f.readlines()# for row in rows:try:csv_write = csv.writer(f, dialect='excel')# 写入列名csv_write.writerow(title)# 写入多行csv_write.writerows(datas)except FileNotFoundError as e:print('指定的文件无法打开')except IOError as e:print(e)print("文件写入错误")

学习资料:https://ke.qq.com/webcourse/index.html#cid=396790&term_id=100473305&taid=3423527021972982&vid=5285890799988610488

Python爬虫实战—2345影视获取经典电影信息相关推荐

  1. python如何过获取双色球信息_2017.08.17 Python爬虫实战之BS4获取双色球中奖信息

    1.目标分析: (1)网址:http://www.zhcw.com/ssq/kaijiangshuju/index.shtml?type=0 (2)查看框架的源代码:在中奖信息表格上右击,选择弹出菜单 ...

  2. Python爬虫入门(爬取豆瓣电影信息小结)

    Python爬虫入门(爬取豆瓣电影信息小结) 1.爬虫概念 网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或脚本.爬虫的本质是模拟浏览器打开网页,获取网页中我们想要的那部分数据. 2.基本流程 ...

  3. Python爬虫实战示例-51job和豆瓣电影

    2018年7月16日笔记 1.conda常用命令 1.1 列出当前环境的所有库 命令:conda list 在cmd中运行命令如下图所示: 图片.png-36.6kB 1.2 管理环境 创建环境 命令 ...

  4. Python爬虫示例1:获取豆瓣电影正在热播的电影信息

    个人的第一个python爬虫程序,如果错误,请指正. 程序用于抓取豆瓣电影正在热播的电影信息,详细代码如下所示: #!/usr/bin/python # -*- coding: UTF-8 -*- i ...

  5. [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论

    前面几篇文章介绍了Selenium.PhantomJS的基础知识及安装过程,这篇文章是一篇应用.通过Selenium调用Phantomjs获取CSDN下载资源的信息,最重要的是动态获取资源的评论,它是 ...

  6. Python爬虫实战(爬取豆瓣电影)

    首先介绍一下python的几个库,python之所以在实现爬虫方面有独特的优势,在于其类库非常的丰富,基本涵盖了所有的需求,只要找到对应的库进行import,这就类似于Java中导入类库或者jar包那 ...

  7. Python爬虫实战 | (3) 爬取豆瓣电影Top250

    在本篇博客中,我们将使用requests+正则表达式来爬取豆瓣电影TOP250电影榜单,获取每部电影的序号.片名.导演.编剧.主演.类型.制作国家/地区.语言.上映日期.片长.又名.豆瓣评分和剧情简介 ...

  8. Python爬虫实战 | (1) 爬取猫眼电影官网的TOP100电影榜单

    在本篇博客中,我们将使用requests+正则表达式来爬取猫眼电影官网的TOP100电影榜单,获取每部电影的片名,主演,上映日期,评分和封面等内容. 打开猫眼Top100,分析URL的变化:发现Top ...

  9. python爬虫实战:批量获取VCG图片

    文章目录 前言 一.说明 二.获取网页路径 三.获取图片下载URL 四.批量下载图片 五.完整代码 六.效果展示 前言 当前对版权保护日益严格,因此在此说明获取的图像仅做研究和个人学习使用,禁止用作商 ...

最新文章

  1. java遍历给定目录,树形结构输出所有文件,包括子目录中的文件
  2. mtrand.RandomState.randint low = high
  3. slf4j 如何返回堆栈_重学JS系列 - JS 调用堆栈
  4. 软件开发的“黑名单”规则设定:benchmark
  5. 行列式运算算法c语言,新手作品:行列式计算C语言版
  6. 新装机器如何修改IP地址
  7. php7 viewmodel,【初念科技】| php框架实例: Laravel之Model Observer模型
  8. 蓝桥杯 ADV-97 算法提高 十进制数转八进制数
  9. 的唯一性_原神:被氪金玩家淹没的角色,输出很高,技能具有唯一性
  10. 解决sns加载数据load_dataset()报错问题
  11. VolTE注册流程0001 融合HLR HSS
  12. 全新 Amazon RDS for MySQL 和 PostgreSQL 多可用区部署选项
  13. 全新 Amazon RDS for MySQL 和 PostgreSQL 多可用区 (Multi-AZ) 部署选项
  14. Static Clutter Removal DPU
  15. Prometheus监控系列--“普罗米修斯“ 入门 | 初识 | 简述 | 超详细
  16. luogu P4848 崂山白花蛇草水
  17. 《地震及时通》1.0版介绍
  18. 揭秘腾讯研究院输出策略:产品和人才的孵化器
  19. 老李分享:robotium常用API 1
  20. 14 医疗挂号系统_【阿里云OSS、用户认证与就诊人】

热门文章

  1. Java 小明同学最近开发了一个网站,在用户注册账户的时候,需要设置账户的密码
  2. 【codeblocks】Mingw libgcc_s_sjlj-1.dll is missing解决方案
  3. 生产者消费者算法的实现
  4. sql语句中的or用法(及与and和in区别)
  5. exynos4412 祼机LED闪灯 - 一闪一闪亮晶晶
  6. [Leetcode学习-c++java]Count Sorted Vowel Strings
  7. 干货 | 在线查你的个人数据有没有泄露
  8. CS61B sp2018笔记 | Efficient Programming
  9. 手电筒java下载_Android studio编写简单的手电筒APP
  10. 使用普通账户安装 Redis 服务