- 本篇博客主要是记录我学习的过程,写的很简略,内容参考崔庆才老师的《Python3网络爬虫开发实践》,若对本篇文章主题想要有一个深入的了解,可以去看看这本书。
Scrapy框架爬取新浪微博
- 新浪微博:一个反爬比较强的网站
准备工作
代理池
-
我们访问爬虫过程中,出现“403 Forbidden”及“您的IP访问频率太高”,这是由于网站采取了一些反爬虫措施。
-
如封IP:服务器会检测到某个IP在单位时间内的请求次数,如果超过阈值,就会直接拒绝服务,返回一些错误信息。解决:使用代理,伪装我们的IP,让服务器识别不出来是由我们本机发起的请求。
代理
-
代理:指代理服务器(代理网络用户去取得网络信息)。就是在本机和代理服务器直接的一个媒介。
-
爬虫代理:使用代理隐藏真实的IP,让服务器误以为是代理服务器在请求自己,这样在爬虫的过程中通过不断更换代理,就不会被封锁了。
使用代理
-
获取代理:最好的还是购买付费代理,但是像我这样的贫苦大学生就可在网上查找免费代理:https://www.xicidaili.com/
-
代理池维护
Cookies池
- Cookies指某些网站为了辨别用户身份、进行对话跟踪而存储在用户本地终端上的数据。
搭建Cookies池(以新浪微博为例)
- 搭建原因:在爬取没有登录的情况下,设置登录权限的页面无法爬取、一些页面请求频繁后访问就会容易被限制或IP被封;
- 由于搭建需要使用很多东西配合,所以这里我就不做具体说明,可参照书本。
爬取思路
- 在准备好上面的东西(代理池和Cookies池是解决反爬问题的、MongoDB用于存储爬取数据)的情况下,要实现用户的大规模爬取。
爬取分析
-
爬取博主:周冬雨
-
分析Ajax链接(AJAX = 异步 JavaScript 和 XML。 AJAX 是一种用于创建快速动态网页的技术。 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。 传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。 有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。):在谷歌浏览器中打开开发者工具,查看网页代码,分析Ajax链接:https://m.weibo.cn/api/container/getIndex?containerid=231051_-followerstagrecomm-1916655407-1042015:tagCategory_050&luicode=10000011&lfid=231051-followers-1916655407-_1042015:tagCategory_050&type=uid&value=1259110474&since_id=2我们只需要构造这个请求的参数。同样可以分析用户详情的Ajax链接、用户微博列表的Ajax链接。
新建项目
-
创建一个项目:scrapy startproject weibo
-
新建一个Spider,并修改代码。这是我学习parse()的参考文章https://www.cnblogs.com/123456www/p/12354964.html
-
创建Item:
-
提取数据:
-
数据清洗(数据清洗是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。)
-
Cookies池和代理池的对接(对应反爬)
-
运行
参考网站和书籍:
-
https://www.cnblogs.com/123456www/p/12354964.html
-
百度百科
-
崔庆才老师的《Python3网络爬虫开发实践》