一、实验内容
1、爬取网站:
智联招聘网站(https://www.zhaopin.com/)
2、网站的反爬虫机制:
在我频繁爬取智联招聘网站之后,它会出现以下文字(尽管我已经控制了爬虫的爬取速度):
因此,我准备使用代理IP池爬取数据。网上多为付费的代理IP池,免费的IP池不稳定,因此我准备通过爬取有关代理IP池的网站上的IP地址搭建自己的代理IP池。
3、备注:
(1)通过分析智联招聘的AJAX接口,模拟AJAX请求直接获取json数据的方法爬取数据。
(2)如果两次请求的地址和参数相同,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容,这将会导致我们得不到最新的数据。因此我研究了智联招聘网站的url中的部分参数(下面会详细介绍)以使得我们爬取到的是最新数据,而不是浏览器中的缓存数据。
(3)当我们输入大于12的页数时,网站会自动修改为12。当我们浏览第12页时,可以看到“下一页”这个按钮变灰了。也就是说,智联招聘网站对于所有的搜索最多只显示12页的数据。这就导致我们得不到足够的数据量。因此我决定采用对多个关键字进行搜索来增加得到的数据量,当然这可能导致得到的数据冗余和重复,但是不管怎样我们都会对数据进行清洗(包括去重),所以这些重复的数据都会在去重中去掉。
二、实验步骤
1、分析智联招聘的AJAX接口
(1)找到数据所在的url
我使用的是谷歌浏览器。打开网页后,右击选择“检查”,再选择“Network”,我们可以浏览几页的内容,来观察页面出现了什么变化,如图出现了多个url:
观察我们可以看出,url有三种:
一种是page-title开头的,我们单击之后查看一下它的Preview,如图:
我们可以知道该url中是网页的标题、描述之类的信息,并没有我们需要的数据。
一种是user-city开头的,我们单击之后查看一下它的Preview,如图:
我们可以知道该url中主要是是用户的地址信息等,也没有我们需要的数据。
还有一种是sou?开头的,如图:
我们所需要的数据在这种url中。
(2)分析url的Headers
我们可以看到Request URL便是像这样拼接起来的。