作为大学毕业后就没有摸过程序的我,借着疫情自学爬虫2个月的菜鸡,写这个项目的确花费了不少的时间,翻阅了无数技术博客,官方文档,包括github上的一些项目(大神写出的代码可读性确实很高,值得学习),不过鉴于爬虫的时效性,很多项目都已经不能用相同的思路去实现了。经过自己的反复尝试,通过以下思路实现微博全用户的爬取,并做了简单的数据展示。
和大家分享分享我的思路,共同学习,共同进步。
自定需求
- 门户网站:https://weibo.com/
- 使用技术:scrapy,pyecharts,flask,redis,selenium
- 爬取内容:user_info中部分信息,并统计微博使用人群的年龄与地域
开始
- 第一步先理清一下思路
- 首先,关于登录。scrapy框架本身就是基于多线程爬取,爬取速度相对较快,为了不被封ip,所以先建立一个ip池(爬西刺免费代理的前2页),爬取微博数据前先判断一次,保存其中可用ip,再在爬微博时,发送每一个请求都随机random出一个代理ip。然后,因为微博涉及到登录,所以用selenium驱动浏览器,让用户输入自己的用户名密码及验证码(虽说也可以通过打码平台或者OCR识别,不过个人觉得,数据不算太海量的情况下,手动输入更方便直观),登录后取出cookie,用于后续爬取。
- 其次,如何爬全站。我的思路是,事先用刚刚登录的账号