微博数据爬取(免cookie)
有个老吊让300块爬微博全网美妆博主的微博中带有淘宝链接的商品,(/-\)于是就有了这篇价值300的全网微博的爬虫。后期需求改的一塌糊涂,可恨的是要分析这些淘宝链接到底卖了啥,意思顺带爬下淘宝,套他猴子!
微博数据爬取练习
但是代码一点不虚,一个小时爬了6万微博用户信息。5分钟解析了这6万微博中到底在卖啥。数据量还是很丰富,主要还是免cookie。
0x01 需求分析
1 | 抓取微博美妆博主发送的微博带有三方推广的链接 |
- 用户获取
- 用户微博获取
- 用户微博中带有三方链接获取
0x02 用户获取
这里用户获取的方式有两种。一:通过搜索入口搜索指定关键字的人群。二:老哥提供了几个大V的微博,然后就没然后了。
通过搜搜获取微博用户
直接使用webdriver,通过搜索入口获取到用户的信息,但是点击下一页会出现登录的跳转请求,通过增加选择参数如页数、省份地区、年龄、性别等参数。大约能获取某个关键字下10万用户https://s.weibo.com/user?q={KEYWORD}&Refer=weibo_user&page={page}®ion=custom:{custom}:{sec}
在获取用户信息的html中,使用pyquery这个库不能部分信息,很奇怪选择了使用正则的方法。其中有个坑,微博的个人主页不仅仅可以通过id还有博主的是英文的方式。
0x03 获取微博
获取个人博主全部微博找到一个请求接口'https://weibo.cn/%s/info' % (self.user_id)
,但是在这里获取的微博中没有淘宝的连接。
0x04 获取淘宝商品链接
使用橱窗获取某微博博主的全部分享链接https://shop.sc.weibo.com/h5/shop/index?weiboUid=1907518591
,这里有ajax请求。没有什么限制直接构造访问。
返回数据中out_type
参数含义:2淘宝 3天猫 0 自身
总结
新浪服务器挺强,线程并发这么多,响应速度还是极快的。
练习点
- 多线程编程
- 优化了生产者消费者的代码。逻辑更清晰
- webdriver
- pyquery
- re
- pyopenxy
数据源码
https://github.com/DropsDevopsOrg/ECommerceCrawlers/tree/master/WeiboCrawler