Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架

本人学习参考的是博主崔庆才的系列教程

cuiqingcai.com/912.html

cuiqingcai.com/3472.html

当然是比我写的详细的多啦,下面是我自己总结的学习过程

简介

我们来看看要获取的电影信息的网址

肖申克的救赎 https://movie.douban.com/subject/1292052/

霸王别姬  https://movie.douban.com/subject/1291546/

这个杀手不太冷 https://movie.douban.com/subject/1295644/

第一页 https://movie.douban.com/top250?start=0&filter=

第二页 https://movie.douban.com/top250?start=25&filter=

……

都很有规律不是吗?而在Scrapy里面,就可以设定我们想要的规律,Scrapy就可以对这些符合规律的网址及页面信息进行处理。先来看看成果吧,这一部分中,我们想要的结果就是输出排行榜里面的电影名称:

《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》

而且我们其实可以做的更好。

《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》

安装

管理员命令行模式下输入

Pip install scrapy

开始安装 之前我出现的问题是没有安装依赖的库 

先来一个

Pip install lxml

即可 出现问题勤用搜索引擎

项目初始化

建立一个文件夹douban,并在这个文件夹处开启cmd 输入

Scrappy startproject db

《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》

Pycharm用这个文件夹创建Project,douban/db处创建一个方便IDE运行的文件run.py 

《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》

输入

from scrapy.cmdline import execute

execute([‘scrapy’, ‘crawl’, ‘douban’])

打开douban/db/items.py,如该文件的名字,这个是我们从豆瓣这个“仓库”里取出来的“货”,我们想要的是什么“货”呢?电影名字。

classDbItem(scrapy.Item):

    name=scrapy.Field()

douban/db/db/spiders下创建spider.py,这个文件用来爬取网页,处理网址,我们需要告诉他我们想去的“仓库”该怎么走,该怎么爬。

《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》

“仓库”的入口是start_urls,走路的规则是必须沿着allow这个参数规定的网址和规律(这里参考正则表达式 注意转义符\?)走,找到地点之后交给parse_item这个人来干活,follow=True表示顺蔓摸瓜,某一个地点的相连的地点同样要去拜访一下。

这里这些地点就是

第一页https://movie.douban.com/top250?start=0&filter=

第二页https://movie.douban.com/top250?start=25&filter=

……等等“

“货物”信息的获取

下面轮到parse_item这个人来干活了,他需要从上述指定地点找到我们要的“货物”的信息,“货物”位于何处可以通过Xpath来查找。网页上点右键查看源代码,被给包住了,Xpath的功能就是通过这些标签来找到特定信息。

《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》
《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》

浏览器F12打开调试控制台,

《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》

指到该信息处,右侧就会显示出对应的代码

《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》
《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》

点右键有个好东西,

《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》

这个就可以拿来用啦。不幸的是,Scrapy经常不能识别出来,所以我们还需要会一点Xpath的语法(查一查10分钟搞定),参考Copy的自己修改一下。这里推荐Chrome的Xpath Helper这个插件,可以查看自己写的Xpath正不正确。

《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》
《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》
《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》

def parse_item(self,response):

name=response.xpath(‘//*[@class=”title”][1]’)

print(name)

《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》

好了,测试一下,运行run.py出现以下问题,403 forbidden,网站怀疑我们是机器人操作,

《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》

于是在setting.py里面伪装我们是浏览器的正常操作,

增加一个

‘User-Agent’: “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1”

即可。

《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》

成功啦!

《Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架》

总结

Scrapy可用来爬特定规则的网址,并进行处理;allow、follow等参数告诉程序如何“顺蔓摸瓜”;Xpath可方便的找出网页中的信息,本文举到的例子仅仅是提取电影名,我们其实如文章一开始的图片可以做的更丰富一些,对分数、演员、导演等加入一些判断,选择我们需要的电影。

本项目代码:

github.com/seekerzz/douban

    原文作者:Seeker_zz
    原文地址: https://www.jianshu.com/p/63c71ba93112
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞