Scrapy框架爬虫学习

  • 本篇博客主要是记录我学习的过程,写的很简略,内容参考崔庆才老师的《Python3网络爬虫开发实践》,若对本篇文章主题想要有一个深入的了解,可以去看看这本书。

Scrapy框架爬取新浪微博

  • 新浪微博:一个反爬比较强的网站

准备工作

代理池

  • 我们访问爬虫过程中,出现“403 Forbidden”及“您的IP访问频率太高”,这是由于网站采取了一些反爬虫措施。

  • 封IP:服务器会检测到某个IP在单位时间内的请求次数,如果超过阈值,就会直接拒绝服务,返回一些错误信息。解决:使用代理,伪装我们的IP,让服务器识别不出来是由我们本机发起的请求。

代理

  1. 代理:指代理服务器(代理网络用户去取得网络信息)。就是在本机和代理服务器直接的一个媒介。

  2. 爬虫代理:使用代理隐藏真实的IP,让服务器误以为是代理服务器在请求自己,这样在爬虫的过程中通过不断更换代理,就不会被封锁了。

使用代理

  1. 获取代理:最好的还是购买付费代理,但是像我这样的贫苦大学生就可在网上查找免费代理:https://www.xicidaili.com/

  2. 代理池维护

Cookies池

  • Cookies指某些网站为了辨别用户身份、进行对话跟踪而存储在用户本地终端上的数据。

搭建Cookies池(以新浪微博为例)

  1. 搭建原因:在爬取没有登录的情况下,设置登录权限的页面无法爬取、一些页面请求频繁后访问就会容易被限制或IP被封;
  • 由于搭建需要使用很多东西配合,所以这里我就不做具体说明,可参照书本。

爬取思路

  • 在准备好上面的东西(代理池和Cookies池是解决反爬问题的、MongoDB用于存储爬取数据)的情况下,要实现用户的大规模爬取。

爬取分析

  1. 爬取博主:周冬雨

  2. 分析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链接。

新建项目

  1. 创建一个项目:scrapy startproject weibo

  2. 新建一个Spider,并修改代码。这是我学习parse()的参考文章https://www.cnblogs.com/123456www/p/12354964.html

  3. 创建Item:

  4. 提取数据:

  5. 数据清洗(数据清洗是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。)

  6. Cookies池和代理池的对接(对应反爬)

  7. 运行

参考网站和书籍:

  • https://www.cnblogs.com/123456www/p/12354964.html

  • 百度百科

  • 崔庆才老师的《Python3网络爬虫开发实践》

你可能感兴趣的:(python)