1. 首页
  2. Python

Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!

“u003Cdivu003Eu003Cpu003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002F66aa000207c9d91b1df0″ img_width=”1280″ img_height=”840″ alt=”Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!” inline=”0″u003Eu003Cu002Fpu003Eu003Cblockquoteu003Eu003Cpu003EScrapy是一个用 Python 写的 Crawler Framework ,简单轻巧,并且非常方便。Scrapy 使用 Twisted 这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。u003Cu002Fpu003Eu003Cu002Fblockquoteu003Eu003Cpu003E以上是网上摘录的一段介绍scrapy框架的文字,大过年的,懒癌高发期…u003Cu002Fpu003Eu003Cpu003E安装scrapy,pip可以解决你的问题: pip install scrapy。u003Cu002Fpu003Eu003Cpu003E这里插一句,如果你运行代码后看到这个错误:u003Cu002Fpu003Eu003Cpreu003EImportError: No module named win32apiu003Cu002Fpreu003Eu003Cpu003E深坑出现,你需要安装pywin32,如果已经安装了pywin32,还出现错误,你仍需手动将你python安装目录下\Lib\site-packages\pywin32_system32下:pythoncom27.dll, pywintypes27.dll两个文件复制到c:\windows\system32下!当然如果不是windows系统的话,请无视!u003Cu002Fpu003Eu003Cpu003E话不多说,开始我们的爬虫吧!u003Cu002Fpu003Eu003Cpu003E首先来分析网页结构:u003Cbru003Eu003Cu002Fpu003Eu003Cpu003E1、url:https:u002Fu002Fyou.autohome.com.cn 打开旅行家的主页,这里我用的是火狐浏览器,看下图u003Cu002Fpu003Eu003Cpu003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002F66ac0000d2cca5ef94a0″ img_width=”1243″ img_height=”362″ alt=”Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!” inline=”0″u003Eu003Cu002Fpu003Eu003Cpu003E点击精彩游记,然后跳出游记页面,u003Cu002Fpu003Eu003Cpu003Eu003Cimg src=”http:u002Fu002Fp9.pstatp.comu002Flargeu002F66ab000185207a6cc32a” img_width=”908″ img_height=”239″ alt=”Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!” inline=”0″u003Eu003Cu002Fpu003Eu003Cpu003E然后在点击全部游记,我们的目标就出现了,拉到最下面,一共3993页,1页20篇u003Cu002Fpu003Eu003Cpu003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002F66a60005744275f089e9″ img_width=”669″ img_height=”76″ alt=”Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!” inline=”0″u003Eu003Cu002Fpu003Eu003Cpu003E很简单的一个网站u003Cbru003Eu003Cu002Fpu003Eu003Cpu003E2、我们开始分析每页的数据,直接打开F12抓包,然后刷新网页或者点击其他页,看看服务器返回的请求都有哪些!u003Cu002Fpu003Eu003Cpu003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002F66a8000223386b4eb446″ img_width=”1221″ img_height=”529″ alt=”Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!” inline=”0″u003Eu003Cu002Fpu003Eu003Cpu003E找到一个get请求,里面是json格式的内容,里面有游记的作者、标题、缩略图等等内容,ok,我们可以开始写代码了!u003Cbru003Eu003Cu002Fpu003Eu003Cpu003EPs:这里我们只做个简单的页面目录的爬虫,就不一 一抓取文章内容了(如果有需要的小伙伴可以自行添加相关内容)。u003Cu002Fpu003Eu003Cpu003E3、打开cmd新建一个scrapy框架,命令为:scrapy startproject autohome ,然后系统自动帮我们建立好相关的目录和py文件,我们仍需手动建立一个spider.py(文件名可自取)来放入我们的爬虫u003Cu002Fpu003Eu003Cpu003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002F66aa0001f1bf35416371″ img_width=”132″ img_height=”159″ alt=”Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!” inline=”0″u003Eu003Cu002Fpu003Eu003Cpu003E先打开item.py,这里存放的是我们的目标,告诉爬虫我们要爬取的内容是什么!代码如下:u003Cbru003Eu003Cu002Fpu003Eu003Cpu003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002F66a700056faa6709ecb6″ img_width=”312″ img_height=”254″ alt=”Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!” inline=”0″u003Eu003Cu002Fpu003Eu003Cpu003E然后打开setting.py(如无必要,不要修改这里的内容),将ROBOTSTXT_OBEY的值改为False(不改的话,有些内容爬不到,这里是选择是否遵循robots协议),然后将你的UA写入下面的头部信息中!u003Cu002Fpu003Eu003Cpu003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002F66a600057d1780c473bd” img_width=”305″ img_height=”510″ alt=”Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!” inline=”0″u003Eu003Cu002Fpu003Eu003Cpu003E其他都不用管了。最后打开spider文件夹,在这里我们要开始写我们的爬虫了!u003Cu002Fpu003Eu003Cpu003E4、打开新建的py文件,先导入用到的模块u003Cu002Fpu003Eu003Cpu003Eu003Cimg src=”http:u002Fu002Fp9.pstatp.comu002Flargeu002F66a900022044ce67d889″ img_width=”271″ img_height=”71″ alt=”Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!” inline=”0″u003Eu003Cu002Fpu003Eu003Cpu003E(导入模块后有错误提示可以不用理会),写入如下代码:u003Cu002Fpu003Eu003Cpu003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002F66aa0001f89b00cec429″ img_width=”659″ img_height=”379″ alt=”Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!” inline=”0″u003Eu003Cu002Fpu003Eu003Cpu003E第6行的name是唯一的,可自行命名u003Cu002Fpu003Eu003Cpu003E第7行为定义爬虫的范围,也就是允许执行的url范围是:autohome.com.cn,注意这里是列表形式u003Cu002Fpu003Eu003Cpu003E第9.10.11行为抓取的内容所在url,通过yield Request返回,上图未截全部分为:u003Cu002Fpu003Eu003Cpreu003Eyield Request(‘https:u002Fu002Fyou.autohome.com.cnu002Fsummaryu002Fgetsearchresultlist?ps=20&pg={}&type=3&tagCode=&tagName=&sortType=3’.format(pg),self.parse)u003Cu002Fpreu003Eu003Cpu003E因为只有3993页,直接for循环取到所有页码,定义了start_requests函数后可省略start_urls列表也就是起始列表u003Cu002Fpu003Eu003Cpu003E第14行开始定义爬取方法u003Cu002Fpu003Eu003Cpu003E第15行,将json格式的内容赋值给一个变量u003Cu002Fpu003Eu003Cpu003E第16行,初始化导入的Items文件中所定义的类u003Cu002Fpu003Eu003Cpu003E第17-24行,循环json格式的内容,并将相应的值赋值给item,这里item是一个字典格式,然后返回给items文件u003Cu002Fpu003Eu003Cpu003E到这里就写完了这个爬虫,为方便使用,我们直接将结果写入json格式u003Cu002Fpu003Eu003Cpu003E打开cmd,命令:scrapy crawl autohome -o autohome.json -t jsonu003Cu002Fpu003Eu003Cpu003E因为我们爬取的内容很少,所以速度还是很快的u003Cbru003Eu003Cu002Fpu003Eu003Cpu003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002F66a700057bb9172ab101″ img_width=”664″ img_height=”422″ alt=”Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!” inline=”0″u003Eu003Cu002Fpu003Eu003Cpu003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002F66a900022dbf8d4a9f70″ img_width=”665″ img_height=”420″ alt=”Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!” inline=”0″u003Eu003Cu002Fpu003Eu003Cpu003E大概十来分钟吧,数据就抓取完成!来看看结果,因为是json格式,截取一小段找个在线解析的网页就可以看了u003Cu002Fpu003Eu003Cpu003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002F66a600058e22ed5256a9″ img_width=”677″ img_height=”442″ alt=”Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!” inline=”0″u003Eu003Cu002Fpu003Eu003Cpu003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002F66a600058e7fcc5129ba” img_width=”678″ img_height=”480″ alt=”Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!” inline=”0″u003Eu003Cu002Fpu003Eu003Cpu003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002F66a600058f2b51b8744d” img_width=”432″ img_height=”246″ alt=”Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!” inline=”0″u003Eu003Cu002Fpu003Eu003Cpu003E验证一下:u003Cbru003Eu003Cu002Fpu003Eu003Cpu003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002F66aa0002063346a9e2f1″ img_width=”848″ img_height=”566″ alt=”Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!” inline=”0″u003Eu003Cu002Fpu003Eu003Cpu003ESo easy!u003Cu002Fpu003Eu003Cpu003E喜欢就关注下呗(;°○° )!u003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!

主题测试文章,只做测试使用。发布者:醒百年,转转请注明出处:http://www.cxybcw.com/13356.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code