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

下载与安装

pip install scrapy

创建项目

scrapy startproject 项目名称



这里 我使用的项目名称为Spider 然后 输入提示的命令

cd Spider

scrapy genspider example example.com

这里 cd 命令是切换到当前工作目录

genspider 则是生成一个爬虫,该爬虫的名字为example,要爬取的网站为example.com

当然,example和example.com 可以根据实际情况进行修改

从提示中可以看到,这里使用了‘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函数来处理请求该url后的内容

parseconten函数的内容为根据请求url后返回的response内容进行提取,使用xpath对网页格式的内容提取非常方便。

爬虫运行

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

scrapy crawl 爬虫名称

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

内容保存

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

爬虫结果

爬取得到的内容为:

爬取结束后,scrapy会给出统计信息

猜你喜欢

转载自www.cnblogs.com/ASE265/p/12214364.html