使用 scrapy 爬取 stackoverflow 上的所有 Python 问答



前两天
小帅b跟你
说了说分布式爬虫


在里面我就说到
弄个例子来体现一下分布式爬虫



python



在此之前
我们可以先写一个单机版的爬虫


往后再对其修改一些配置
就可以搞成分布式的了


所以这次我们先
爬取 stackoverflow 上的
所有 Python 问答


python




那么接下来就是
学习 Python 的正确姿势

python





别问我为什么不爬取国内的网站


python



打开

https://stackoverflow.com/questions/tagged/python



python





简单分析一下这个页面



python





我们就去抓取每一个 item 里面的


问题
votes
answers
views
链接


待会根据 xpath 获取就可以了


那我们先创建一个工程吧



python




python




打开 items.py 
定义一下我们要获取的字段



python




接着在 spider 创建一个文件
我们就叫做
stackoverflow-python-spider.py


创建一个继承 scrapy 的 spider 类



python


 


接着定义一下请求链接的方法
在这里我们可以看到
每个页面的请求链接是这样的



python





那么我们可以这样构建



python




接着我们定义一下回调的解析方法
根据每个元素的 xpath
和我们刚刚定义的字段结合起来



python





python





接着就可以在 pipelines 中
配置链接数据库了
这里我们使用 MongoDB



python




主要是初始化的时候链接数据库
在解析过程把数据和保存到数据库



在 settings 中需要配置下



python




顺便配置一下“狗头”



python




当然如果你的破网访问不了
stackoverflow 的话
自行设置下代理



python




最后开启你的 MongoDB
执行以下命令开始爬取

 scrapy crawl stackoverflow-python





python

python




这样就把数据爬取到你的数据库了


python




ok
上就是本次分享的内容
希望对你有帮助


如果你需要源码的话
可以在公众号后台
发送 “111” 获取


下次我们继续盘它
那么我们下回见了
peace


python

扫一扫

学习 Python 没烦恼


python



原文始发于微信公众号(学习python的正确姿势):python

发表回复