拉钩异步数据抓取

本文介绍了一种使用Python爬取拉勾网上Python爬虫相关职位的方法。通过分析网页结构和请求方式,作者成功实现了对职位信息的抓取,并解决了反爬虫问题。
博主大四了面临就业,在老师的推荐下学习了Python,近日在拉钩上爬取关于Python和爬虫相关职位的信息。
前言
    首先来整理思路,尽然是爬取Python和爬虫的相关职位,就没必要从拉钩首页开始。我们直接搜索到了Python爬虫,搜索的结果就是我们的目标。
我们在结果页面的头部获得该页的url作为爬取的开始`https://www.lagou.com/jobs/list_Python%E7%88%AC%E8%99%AB?labelWords=&fromSearch=true&suginput=`

下面就是在谷歌浏览器下打开URL的结果
这里写图片描述
按f12打开谷歌开发者工具,点击network,这时候network下面是空白的,然后刷新页面,会弹出一些网络请求,图片如下这里写图片描述
在图片里可以看到我打的两个箭头,其中all显示这个页面多有的网络请求,我们需要的在请求在xhr里面,叫做异步请求,之前也经常用这个xhr但是不知道叫啥,这次终于知道了。
打开xhr按钮结果如下这里写图片描述
在这里我们可以看到有四个 请求,其中两个是post method,两个get method,根据正常浏览页面的习惯,我猜测我们需要的结果在post里面 也就是前两个method,我们字啊其中一个找到了我们需要的结果
这里写图片描述
我们可以直接打开这个请求的url,发现被ban了,这里写图片描述
反扒出现了 ,有些小小的激动,之前学的时候没咋碰见 ,第一次处理,感觉很刺激。出现这种情况,我也不知道咋办,就简单的吧request headers,全部加到代码里面去,User-Agent这个肯定需要,我就把其余的信息挨个去掉去实验,结果发现最后有用的是Referer和Cookie。post方法肯定需要提交表单,回过头来观察这个请求,在form data里面发现了几个数据这里写图片描述
这个肯定是我们需要的form data,这样就差不多了。
在接下来的爬取中返现pn是代表爬取的第几页,kd就是关键字,改变这两个就可以改变爬取的内容了。最后将爬取的内容保存到了表格里面。这里写图片描述
下面是部分代码

def getjobList(page):
    url = 'https://www.lagou.com/jobs/positionAjax.json?px=default&city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false&isSchoolJob=0'
    data = {
        'first':'false',
        'pn': page,
        'kd': 'python爬虫'
    }
    headers= {
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.91 Safari/537.36",

        "Cookie":"user_trace_token=20170920111346-b6f0a0db-9db1-11e7-91cd-5254005c3644; LGUID=20170920111346-b6f0ad29-9db1-11e7-91cd-5254005c3644; index_location_city=%E5%85%A8%E5%9B%BD; JSESSIONID=ABAAABAACDBABJB264CD376AD4CEB7895B362ECDAB4455F; PRE_UTM=; PRE_HOST=www.baidu.com; PRE_SITE=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3Dik1HL4AsSAYXSI21gSfPOpjR1PqZ8V4drk29Rf11JcMcF8o4rsask7bp3p2LObIB%26wd%3D%26eqid%3De23a8c5f000539080000000259c25925; PRE_LAND=https%3A%2F%2Fwww.lagou.com%2Fgongsi%2F147.html; TG-TRACK-CODE=index_navigation; _gid=GA1.2.1268471344.1505877224; Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1505877244,1505877267,1505909020,1505909036; Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1505909211; _ga=GA1.2.1288474509.1505877224; LGSID=20170920200358-c843b258-9dfb-11e7-91f0-5254005c3644; LGRID=20170920200653-30b84ab8-9dfc-11e7-91f0-5254005c3644; SEARCH_ID=a3f40a914b8d47958628457ca2f2f298",
        "Referer":"https://www.lagou.com/jobs/list_python%E7%88%AC%E8%99%AB?px=default&city=%E5%8C%97%E4%BA%AC"
    }
    res = requests.post(url=url ,data=data,headers=headers).json()

    result = res["content"]["positionResult"]["result"]
    return result
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值