① 第5课 实例二:爬取电影
1. 选择一个网站: https://www.douban.com
2. 在进行爬取之前,我们先去看看它的robots协议。
协议网址: https://www.douban.com /robots.txt
3. 进入首页 https://movie.douban.com/top250?start=0&filter= ,打开检查工具,在Elements里查看这个网页,是什么结构。
点击开发者工具左上角的小箭头,选中“肖申克的救赎”,这样就定位了电影名的所在位置,审查元素中显示<span class="title">:<span>标签内的文本,class属性;推荐语和评分也是如此,<span class='inq'>,<span class='rating_num'>;序号:<em class>,<em>标签内的文本,class属性;推荐语<span class='inq'>;链接是<a>标签里href的值。最后,它们最小共同父级标签,是<li>。
4. 我们再换个电影验证下找的规律是否正确。
5. check后,我们再看一共10页,每页的url有什么相关呢?
第1页: https://movie.douban.com/top250?start=0&filter=
第3页: https://movie.douban.com/top250?start=50&filter=
第7页: https://movie.douban.com/top250?start=150&filter=
发现只有start后面是有变化,规律就是第N页,start=(N-1)*25
6. 基于以上分析,我们有两种写爬虫的思路。
思路一:先爬取最小共同父级标签 <li>,然后针对每一个父级标签,提取里面的序号/电影名/评分/推荐语/链接。
思路二:分别提取所有的序号/所有的电影名/所有的评分/所有的推荐语/所有的链接,然后再按顺序一一对应起来。
import requests# 引用requests库
from bs4 import BeautifulSoup# 引用BeautifulSoup库
res_films=requests.get('https://movie.douban.com/')# 获取数据
bs_films=BeautifulSoup(res_films.text,'html.parser')# 解析数据
fil_title=bs_films.find_all(class_='title')
fil_num=bs_films.find_all(class_="")
list_all=[]# 创建一个空列表,用于存储信息
for x in range(len(fil_num)):
list_films=[fil_num[x].text[18:-14],fil_title[x].find('a')['href']]
list_all.append(list_films)
print(list_all)
② Python爬虫实战(1)requests爬取豆瓣电影TOP250
爬取时间:2020/11/25
系统环境:Windows 10
所用工具:Jupyter NotebookPython 3.0
涉及的库:requestslxmlpandasmatplotlib
umpy
蛋肥想法: 先将电影名称、原名、评分、评价人数、分类信息从网站上爬取下来。
蛋肥想法: print数据列表后发现电影原名、分类信息等存在不需要的字符,需预先处理;同时因为后续想做一个豆瓣电影TOP250的维度分布图,而同一电影存在多个发行国家、类型(如“法国 美国 / 剧情 动作 犯罪”),为了简(偷)便(懒),这里均取第一个作为记入的数据;最后将数据保存为xlsx。
蛋肥想法: 蛋肥想知道在豆瓣电影TOP250中年份、国家、类型的维度数据,为了练手,使用刚才保存成xlsx的数据,并分别画成雷达图、柱形图、扇形图。
③ 怎样避开豆瓣对爬虫的封锁,从而抓取豆瓣上电影内容
用前嗅的ForeSpider数据采集软件可以采集,我之前采过豆瓣的影评,可以设置各种过滤规律,比如我只要豆瓣评分6.0以上的电影,就可以精确的过滤。ForeSpider可以智能模拟浏览器和用户行为,突破反爬虫限制。可以设置代理IP,并且可以自动过滤优质IP代理,提高使用代理的速度。
对于一些高难度的网站,反爬虫措施比较多,可以使用ForeSpider内部自带的爬虫脚本语言系统,简单几行代码就可以采集到高难度的网站。
可以去下载免费版,免费版不限制采集功能。有详细的操作手册可以学习。如果自己不想学习,可以让前嗅进行配置。
而且客服可以教你怎样用,有问题出错了客服会远程操作,非常好的服务态度。
④ Python爬虫实战,Python多线程抓取5千多部最新电影下载链接
利用Python多线程爬了5000多部最新电影下载链接,废话不多说~
让我们愉快地开始吧~
Python版本: 3.6.4
相关模块:
requests模块;
re模块;
csv模块;
以及一些Python自带的模块。
安装Python并添加到环境变量,pip安装需要的相关模块即可。
拿到链接之后,接下来就是继续访问这些链接,然后拿到电影的下载链接
但是这里还是有很多的小细节,例如我们需要拿到电影的总页数,其次这么多的页面,一个线程不知道要跑到什么时候,所以我们首先先拿到总页码,然后用多线程来进行任务的分配
我们首先先拿到总页码,然后用多线程来进行任务的分配
总页数其实我们用re正则来获取
爬取的内容存取到csv,也可以写个函数来存取
开启4个进程来下载链接
您学废了吗?最后祝大家天天进步!!学习Python最重要的就是心态。我们在学习过程中必然会遇到很多难题,可能自己想破脑袋都无法解决。这都是正常的,千万别急着否定自己,怀疑自己。如果大家在刚开始学习中遇到困难,想找一个python学习交流环境,可以加入我们,领取学习资料,一起讨论,会节约很多时间,减少很多遇到的难题。