一文读懂python Scrapy爬虫框架
Scrapy是什么?
先看官网上的说明,http://scrapy-chs.readthedocs.io/zh_CN/latest/intro/overview.html
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
其最初是为了页面抓取(更确切来说,网络抓取)所设计的,也可以应用在获取API所返回的数据(例如AmazonAssociatesWebServices)或者通用的网络爬虫。
Scrapy是一个非常好用的爬虫框架,它不仅提供了一些开箱即用的基础组件,还提供了强大的自定义功能。
#Scrapy安装
Scrapy官网:https://scrapy.org/
各位同学的电脑环境应该和小编的相差不远(如果是使用win10的话)安装过程需要10分钟左右
安装命令:
pipinstallscrapy
由于Scrapy依赖了大量的第三方的包,所以在执行上面的命令后并不会马上就下载Scrapy,而是会先不断的下载第三方包,包括并不限于以下几种:
- pyOpenSSL:Python用于支持SSL(SecuritySocketLayer)的包。
- cryptography:Python用于加密的库。
- CFFI:Python用于调用C的接口库。
- zope.interface:为Python缺少接口而提供扩展的库。
- lxml:一个处理XML、HTML文档的库,比Python内置的xml模块更好用。
- cssselect:Python用于处理CSS选择器的扩展包。
- Twisted:为Python提供的基于事件驱动的网络引擎包。
- ……
如果安装不成功多试两次或者执行pipinstall--upgradepip后再执行pipinstallscrapy
等待命令执行完成后,直接输入scrapy进行验证。
C:\Users\Administrator>scrapy Scrapy2.4.0-noactiveproject Availablecommands: benchRunquickbenchmarktest ...
版本号可能会有差别,不用太在意
如果能正常出现以上内容,说明我们已经安装成功了。
理论上Scrapy安装出现各种问题才算正常情况
三、Scrapy创建项目
Scrapy提供了一个命令来创建项目scrapy命令,在命令行上运行:
scrapystartprojectjianshu
我们创建一个项目jianshu用来爬取简书首页热门文章的所有信息。
jianshu/ scrapy.cfg jianshu/ __init__.py items.py pipelines.py settings.py spiders/ __init__.py ...
spiders文件夹下就是你要实现爬虫功能(具体如何爬取数据的代码),爬虫的核心。在spiders文件夹下自己创建一个spider,用于爬取简书首页热门文章。
scrapy.cfg是项目的配置文件。
settings.py用于设置请求的参数,使用代理,爬取数据后文件保存等。
items.py自己预计需要爬取的内容
middlewares.py自定义中间件的文件
pipelines.py管道,保持数据
项目的目录就用网图来展示一下吧
cd到Jianshu项目中,生成一个爬虫:
scrapygenspiderjianshublogwww.jianshu.com
这种方式生成的是常规爬虫
1)新建jianshuSpider
importscrapy classJianshublogSpider(scrapy.Spider): name='jianshublog' allowed_domains=['www.jianshu.com'] start_urls=['http://www.jianshu.com/'] defparse(self,response): pass
可以看到,这个类里面有三个属性name、allowed_domains、start_urls和一个parse()方法。
name,它是每个项目唯一的名字,用来区分不同的Spider。
allowed_domains,它是允许爬取的域名,如果初始或后续的请求链接不是这个域名下的,则请求链接会被过滤掉。
start_urls,它包含了Spider在启动时爬取的url列表,初始请求是由它来定义的。
parse,它是Spider的一个方法。默认情况下,被调用时start_urls里面的链接构成的请求完成下载执行后,返回的响应就会作为唯一的参数传递给这个函数。该方法负责解析返回的响应、提取数据或者进一步生成要处理的请求。
到这里我们就清楚了,parse()方法中的response是前面的start_urls中链接的爬取结果,所以在parse()方法中,我们可以直接对爬取的结果进行解析。
修改USER_AGENT
打开settings.py添加UA头信息
USER_AGENT='Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/69.0.3493.3Safari/537.36'
修改`parse`方法解析网页
我们打开简书首页 右键检查(ctrl+shift+I)发现所有的博客头条都放在类名.note-list.content的div节点里面
修改jianshublog.py代码如下
jianshublog.py
importscrapy classJianshublogSpider(scrapy.Spider): name='jianshublog' allowed_domains=['www.jianshu.com'] start_urls=['http://www.jianshu.com/'] defparse(self,response): blogs=response.css('.note-list.content') #获取博客列表 forbloginblogs:#遍历博客列表 title=blog.css('.title::text').extract_first()#提取标题 link=blog.css('.title::attr(href)').extract_first()#提取链接 nickname=blog.css('.nickname::text').extract_first()#提作者 print("标题:",title)#打印标题 #print("链接:",link) #print("作者:",nickname)
最后别忘了执行爬虫命令
scrapycrawljianshublog
整个项目就完成啦
下一讲我们把文章数据爬取出来,存储在csv文件里面
到此这篇关于一文读懂pythonScrapy爬虫框架的文章就介绍到这了,更多相关pythonScrapy爬虫框架内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。