首页 > 编程语言 > 详细

python爬虫框架之scrapy的快速上手

时间:2020-01-19 17:18:38      阅读:77      评论:0      收藏:0      [点我收藏+]

下载与安装

pip install scrapy

创建项目

scrapy startproject 项目名称

执行完创建项目的命令后,得到的提示为:

You can start your first spider with:
cd Spider
scrapy genspider example example.com

然后按照提示,依次来执行这两行命令。
这里,cd命令是切换到当前爬虫的工作目录。
genspider 则是生成一个爬虫,该爬虫的名字为example,要爬取的网站为example.com。
当然,example和example.com 可以根据实际情况进行修改。

执行完生成爬虫的命令后,我们可以看到如下提示:

Created spider ‘example‘ using template ‘basic‘ in module:
Spider.spiders.example

从提示中可以看到,这里使用了‘basic’模板来生成爬虫,当然可以指定别的模板,这个内容后面会提到
最终,我们得到的这整个项目的框架为:
技术分享图片
其中,Spider为我们使用startproject命令指定的项目名称,而example.py则为我们的爬虫文件。
至于items.py,middlewares.py,pipelines.py,settings.py,这些文件的作用请参考菜鸟教程
简单来说,items.py: 项目的目标文件。pipelines.py: 项目的管道文件。settings.py: 项目的设置文件。middlewares.py:项目的中间件文件。

example.py文件

不同的模板生成的文件是不一样的,这里的example.py文件对应于‘basic’模板。
技术分享图片
可以看到,该文件定义了一个爬虫类ExampleSpider,在该类中,name为爬虫的名字,allowed_domains指定要爬取的网址,start_url指定从哪个url开始爬取。
而parse函数则是对请求start_url返回的response对象进行分析,该函数需要用户自定义。

例子:新浪新闻的简单爬取

这里,假设我们已经对新浪新闻网站进行了分析,并决定爬取新浪新闻里的滚动新闻里的国内新闻版块。
为了不与之前的example搞混,我们根据上述的流程重新创建一个用于爬取新浪新闻的爬虫。
具体实现的功能是爬取共爬取10页的所有新闻链接,然后载根据得到的新闻链接爬取对应的新闻,并将新闻的标题,内容和发布时间等信息保存下来。

因此,在我们的爬虫文件中,设置的参数如下:

name = ‘sina‘
allowed_domains = [‘feed.mix.sina.com.cn‘,‘sina.com.cn‘]
start_urls = ["https://feed.mix.sina.com.cn/api/roll/get?pageid=153&lid=2510&k=&num=50&page={}".format(page) for page in range(10)]

然后,决定我们需要爬取的内容,比如我们需要获得每篇文章的标题,关键字,内容,发布的时间,媒体,标签这些内容,因而需要对items.py文件进行设置,设置内容如下:
技术分享图片

然后,回到我们的爬虫文件,将items.py的内容导入到爬虫文件中
技术分享图片

parse函数的实现为:获得请求start_url的返回的response内容,并对其提取url,然后将其抛给parsecontent函数,由parsecontent函数来处理请求该url后获得的response的内容。
技术分享图片

parseconten函数的内容为根据请求url后返回的response内容进行提取,使用xpath对网页格式的内容提取非常方便,当然也可以使用其他方法,比如正则表达式或者beautifulsoup等工具。
技术分享图片

爬虫运行

在工作目录下输入命令以启动爬虫

scrapy crawl 爬虫名称

这里输入的命令为:scrapy crawl sina

内容保存

爬虫爬取的内容保存实现在pipelines.py文件,在编写爬虫时,我们最后抛出了item,这个item应该被传送得到了pipelines.py中,
在pipelines.py文件中,我们可以实现将获取的item写入文件或者保存得到MongoDB数据库中。

爬虫结果

爬取得到的内容为:
技术分享图片

爬取结束后,scrapy会给出统计信息
技术分享图片

python爬虫框架之scrapy的快速上手

原文:https://www.cnblogs.com/ASE265/p/12214364.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!