
许多网页爬取任务都会遇到一个难题:网页源代码与实际显示内容不符,尤其在动态加载内容方面。这是因为许多网站使用JavaScript异步加载数据,这些数据不会直接出现在初始HTML中。本文以58同城招聘页面为例,讲解如何解决此类问题,准确获取招聘信息中的申请人数和浏览人数。
在抓取58同城招聘页面时,我们发现源代码中申请人数和浏览人数始终为0,但实际页面显示的数字却实时更新,与浏览器开发者工具中的Elements元素内容一致。这说明这些数据是通过JavaScript从后台接口异步获取的。
为了解决这个问题,我们需要找到并访问这个后台接口。通过分析网络请求,我们找到了目标接口:statisticszp.58.com/position/totalcount/?infoId=27988... (实际地址中...代表动态参数)。访问该接口,返回的JSON数据类似如下:
{
"deliveryCount": 1141,
"commentCount": 0,
"infoCount": 4,
"resumeReadPercent": 0,
"referUrl": "",
"nextUrl": "null"
}
其中,deliveryCount代表申请人数,infoCount代表浏览人数。
因此,获取数据的完整流程如下:
- 定位接口地址: 使用浏览器开发者工具(通常按F12键),找到加载申请人数和浏览人数的网络请求,确定接口地址。
-
发送请求: 使用Python的
requests库或其他HTTP请求库,向该接口发送GET请求。 -
解析JSON数据: 接收接口返回的JSON数据,并提取
deliveryCount和infoCount字段的值。 - 数据处理: 根据需求,对提取的数据进行进一步处理和存储。
通过以上步骤,即使网页源代码中没有这些数据,我们也能成功获取58同城招聘页面上动态更新的申请人数和浏览人数,从而克服了网页源代码与实际显示内容不一致的难题。










