Python拉勾爬虫——以深圳地区数据分析师为例

    xiaoxiao2021-03-25  168

    拉勾因其结构化的数据比较多因此过去常常被爬,所以在其多次改版之下变得难爬。不过只要清楚它的原理,依然比较好爬。其机制主要就是AJAX异步加载JSON数据,所以至少在搜索页面里翻页url不会变化,而且数据也不会出现在源代码里。

    数据解析

    这是深圳地区的数据分析师页面,用Chrome检查打开。在XHR中可以看到一个以postionAjax.json开头的脚本,打开Preview看一下,可以看到:

    可以发现这些数据与前端的数据一致,此时我们已经找到了数据入口,就可以开始爬了。

    数据爬取

    在Headers里可以查看请求方式:

    Request Header: Request URL:https://www.lagou.com/jobs/positionAjax.json?city=深圳&needAddtionalResult=false Request Method:POST Status Code:200 OK Remote Address:106.75.72.62:443

    从Request Header中可以看到,是用POST提交表单方式查询的(所以如果你直接点开Request URL你会发现数据不对,因为没有提交表单数据)。

    那么我们就可以在Python中构造请求头以及提交表单数据来访问:

    import requests import time from sqlalchemy import create_engine import pandas as pd from random import choice import json import numpy engine=create_engine(#这里填你自己数据库的参数#) # 连接数据库 dl = pd.read_sql("proxys",engine) def get_proxy(dl): n = choice(range(1, len(dl.index))) proxy = {"http":"http://%s:%s" %(dl["ip"][n],dl["port"][n]), "https": "http://%s:%s" % (dl["ip"][n], dl["port"][n])} return(proxy) def get_header(): headers = { "User-Agent": ""Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"", "Accept": "application/json, text/javascript, */*; q=0.01", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "Referer": "https://www.lagou.com/jobs/list_%E6
    转载请注明原文地址: https://ju.6miu.com/read-1718.html

    最新回复(0)