Python爬虫框架Scrapy爬取微博数据

准备

安装第三方库requests和pymongo

安装MongoDB

创建一个weibo爬虫项目

如何创建Scrapy项目之前文章都已经提到了,直接进入主题。

创建Items

Item数据这部分我只需要个人信息,微博数,关注数、分数数这些基本信息就行。

编写Spider

为了方便爬虫,我们选择登陆的入口是手机版的微博

其中微博的uid可以通过访问用户资料页或者从关注的href属性中获取


代码中值得注意的地方有几个。

start_url

这里我们填写的是微博的uid,有的用户有自定义域名(如上图),要访问后才能得到真正的uid

start_url 填写的初始种子数要在10个以上。这是为了确保后面我们爬取到的新的种子能够加入到待爬取的队列中。10个以上的规定是从Scrapy文档中查得的

REACTOR_THREADPOOL_MAXSIZE

Default: 10

线程数是Twisted线程池的默认大小(The maximum limit for Twisted Reactor thread pool size.)

CloseSpider

当遇到不需要的继续爬取的连接时(如已经爬取过的链接,定义的僵尸粉链接等等),就可以用CloseSpider关闭当前爬虫线程

编写middlewares

编写cookie的获取方法

这里我原本是想用手机版的微博去模拟登陆的,奈何验证码是在是太难搞了。所以我直接用网上有人编写好的登陆网页版微博的代码SinaSpider 这位写的很好,有兴趣的可以去看看。其中还有另一位写了模拟登陆(带验证码) 经测试可用。只不过我还没想好怎么嵌入到我的项目中。


登陆-反爬虫的这部分应该是整个项目中最难的地方了。好多地方我都还不太懂。以后有空在研究

编写pipelines

这边只需要主要什么类型的Item存到那张表里就行了


运行一下程序,就能看到MongoDB中有了我们要的数据了

猜你喜欢

转载自blog.csdn.net/qq_40925239/article/details/88844376