scrapy实现新浪微博爬虫


本文摘自php中文网,作者little bottle,侵删。

本篇文章主要讲述了用scrapy实现新浪微博爬虫,具有一定的参考价值,感兴趣的朋友可以了解一下 ,看完不妨自己去试试哦!

最近因为做毕设的原因,需要采集一批数据。本着自己动手的原则,从新浪微博上采集到近百位大家耳熟能详的明星14-18年的微博内容。看看大佬们平常都在微博上都有哪些动态吧~
1.首先项目采用scrapy编写,省时省力谁用谁知道。
采集的网站为weibo.com,是微博的网页端。稍稍麻烦了一点,但相对于移动段和wap站点来说内容稍微更全一点。
2.采集之前我们先来看下微博都给我们设置了哪些障碍。

  • 登录
  • 页面js渲染

由于微博对于没登录的用户默认都是302跳转到登录界面,所以采集微博钱必须得让微博认为,本次采集偷了个懒,直接是先手动登录然后保存cookie到scrapy上,请求的时候带上cookie去访问,因为采集量并不是很大,估计也就10w条左右。这里需要对刚入scrapy的小伙伴需要提醒一下,scrapy的cookie是类似与json的形式,不像平常在requests上直接粘贴就可以用,需要转换一下格式。
在这里插入图片描述
大概就是像这样,所以需要把登录后的cookie粘贴出来用代码转换一下,代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

class transCookie:

    def __init__(self, cookie):

        self.cookie = cookie

 

    def stringToDict(self):

        itemDict = {}

        items = self.cookie.split(';')

        for item in items:

            key = item.split('=')[0].replace(' ', '')

            value = item.split('=')[1]

            itemDict[key] = value

        return itemDict

 

 

if __name__ == "__main__":

    cookie = "你的cookie"

    trans = transCookie(cookie)

    print(trans.stringToDict())

应该来说一个cookie差不多够用,我这我保存的是三个cookie,多个cookie简单的办法是把多个cookie直接放在一个数组里面,每次请求的时候用random函数随机挑一个出来,当然这只是针对采一批数据就撤的情况,大规模必须维护一个账号池。请求的时候带上ua,和cookie。如下:
在这里插入图片描述
微博是以oid区分每个用户的,我们以吴彦祖微博为例,在微博搜索界面搜索吴彦祖,进入主页右键查看网页源代码我们可以看到:
在这里插入图片描述
此处的oid即是每个用户的唯一标识。对应用户的主页地址即为https://weibo.com + oid,
有了地址,我们直接进入微博界面进行采集即可,拼凑出url地址,例如:
https://weibo.com/wuyanzu?is_all=1&stat_date=201712#feedtop
这是吴彦祖2017年12月份的微博,我们不难发现,只需改变stat_date后面的数字即为对应微博地址。对于某些微博量比较多的用户,月份的微博可能还涉及到js再加载一次,当然,我们高冷的男神吴彦祖先生肯定是不会发那么多的,我们再找一个微博量比较大的自媒体,例如:
在这里插入图片描述
可以看到,余下的微博是需要通过js异步加载来呈现给用户的。打开浏览器开发者模式,
在这里插入图片描述
在这里插入图片描述

阅读剩余部分

相关阅读 >>

Python如何将excel数据处理可视化

Python爬虫获取图片并下载保存至本地

Python ord()是什么?ord()有什么用?

Python编程快速上手适合初学者吗

Python实现删除时保留特定文件夹和文件的示例

Python的除法运算符是什么意思

Python适合做什么开发?

Python中列表长度可变吗

Python里upper什么意思

Python print用法是什么

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...