Python爬虫框架scrapy抓取旅行家网所有游记!从此出游不发愁!-阿里云开发者社区

开发者社区> 云飞学编程> 正文

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

简介: Scrapy是一个用 Python 写的 Crawler Framework ,简单轻巧,并且非常方便。Scrapy 使用 Twisted 这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。
+关注继续查看


Scrapy是一个用 Python 写的 Crawler Framework ,简单轻巧,并且非常方便。Scrapy 使用 Twisted 这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。

以上是网上摘录的一段介绍scrapy框架的文字,大过年的,懒癌高发期...

安装scrapy,pip可以解决你的问题: pip install scrapy。

这里插一句,如果你运行代码后看到这个错误:


ImportError: No module named win32api

深坑出现,你需要安装pywin32,如果已经安装了pywin32,还出现错误,你仍需手动将你python安装目录下\Lib\site-packages\pywin32_system32下:pythoncom27.dll, pywintypes27.dll两个文件复制到c:\windows\system32下!当然如果不是windows系统的话,请无视!

话不多说,开始我们的爬虫吧!

首先来分析网页结构:

1、url:https://you.autohome.com.cn 打开旅行家的主页,这里我用的是火狐浏览器,看下图

点击精彩游记,然后跳出游记页面,

然后在点击全部游记,我们的目标就出现了,拉到最下面,一共3993页,1页20篇

很简单的一个网站

2、我们开始分析每页的数据,直接打开F12抓包,然后刷新网页或者点击其他页,看看服务器返回的请求都有哪些!

找到一个get请求,里面是json格式的内容,里面有游记的作者、标题、缩略图等等内容,ok,我们可以开始写代码了!

Ps:这里我们只做个简单的页面目录的爬虫,就不一 一抓取文章内容了(如果有需要的小伙伴可以自行添加相关内容)。

3、打开cmd新建一个scrapy框架,命令为:scrapy startproject autohome ,然后系统自动帮我们建立好相关的目录和py文件,我们仍需手动建立一个spider.py(文件名可自取)来放入我们的爬虫

先打开item.py,这里存放的是我们的目标,告诉爬虫我们要爬取的内容是什么!代码如下:

然后打开setting.py(如无必要,不要修改这里的内容),将ROBOTSTXT_OBEY的值改为False(不改的话,有些内容爬不到,这里是选择是否遵循robots协议),然后将你的UA写入下面的头部信息中!

其他都不用管了。最后打开spider文件夹,在这里我们要开始写我们的爬虫了!

4、打开新建的py文件,先导入用到的模块

(导入模块后有错误提示可以不用理会),写入如下代码:

第6行的name是唯一的,可自行命名

第7行为定义爬虫的范围,也就是允许执行的url范围是:autohome.com.cn,注意这里是列表形式

第9.10.11行为抓取的内容所在url,通过yield Request返回,上图未截全部分为:


yield Request('https://you.autohome.com.cn/summary/getsearchresultlist?ps=20&pg={}&type=3&tagCode=&tagName=&sortType=3'.format(pg),self.parse)

因为只有3993页,直接for循环取到所有页码,定义了start_requests函数后可省略start_urls列表也就是起始列表

第14行开始定义爬取方法

第15行,将json格式的内容赋值给一个变量

第16行,初始化导入的Items文件中所定义的类

第17-24行,循环json格式的内容,并将相应的值赋值给item,这里item是一个字典格式,然后返回给items文件

到这里就写完了这个爬虫,为方便使用,我们直接将结果写入json格式

打开cmd,命令:scrapy crawl autohome -o autohome.json -t json

因为我们爬取的内容很少,所以速度还是很快的

大概十来分钟吧,数据就抓取完成!来看看结果,因为是json格式,截取一小段找个在线解析的网页就可以看了

验证一下:

So easy!

喜欢就关注下呗(;°○° )!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Scrapy框架-通过scrapy_splash解析动态渲染的数据
前言 对于那些通过JS来渲染数据的网站,我们要解析出它的html来才能取到想要的数据,通常有两种解决办法: 1、通过selenim调用浏览器(如chrome firefox等)来爬取,将解析的任务交给浏览器。
2048 0
Scrapy框架--通用爬虫Broad Crawls(上)
通用爬虫(Broad Crawls)介绍 [传送:中文文档介绍],里面除了介绍还有很多配置选项。 通用爬虫一般有以下通用特性: 其爬取大量(一般来说是无限)的网站而不是特定的一些网站。
1810 0
3、web爬虫,scrapy模块介绍与使用
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。
932 0
Scrapy笔框架--通用爬虫Broad Crawls(中)
rules = ( Rule(LinkExtractor(allow=r'WebPage/Company.*'),follow=True,callback='parse_company'), Rule(LinkExtractor(allow=r'WebPage/JobDetail.
1042 0
【开发者的2018】GAN、AutoML、统一框架、语音等十大趋势
本文从开发者的角度,总结了GAN、AutoML、语音识别、NLP等已经可以用于实际产品的技术,以及值得关注的新趋势。作者认为,有ONNX这类的统一格式,Caffe Zoo等模型库,以及AutoML等自动化工具,制作基于AI的应用已经变得非常容易。
5248 0
Python爬虫入门教程 37-100 云沃客项目外包网数据爬虫 scrapy
爬前叨叨 2019年开始了,今年计划写一整年的博客呢~,第一篇博客写一下 一个外包网站的爬虫,万一你从这个外包网站弄点外快呢,呵呵哒 数据分析 官方网址为 https://www.clouderwork.
753 0
《JavaScript开发框架权威指南》——2.7 小结
本节书摘来自异步社区《JavaScript开发框架权威指南》一书中的第2章,第2.7节,作者:【美】Tim Ambler , Nicholas Cloud著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1403 0
30
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载