无关紧要的内容,可以选择跳过 作为一个24K纯菜鸟,一路上跌跌撞撞踩过不少坑,终于可以动手去爬一下网站练习一下了。于是打算将前程无忧、智联、boss直聘还有拉勾网的数据爬下来。 因为是菜鸟,当然是越简单越好,所以就选择爬它们的m站。当我按照往常一样读取网页的时候,弹出了以下信息:
‘{“status”:false,“msg”:“您操作太频繁,请稍后再访问”,“clientIp”:“222.175.171.6”,“state”:2402}\n’
换了几次代理后,还是输出一样的信息,单纯如我,还真的过了一段时间后再打开。尝试过几次以后,决定问问度娘,才发现这是一种反爬措施。说好的操作太频繁,请稍后再访问原来只是一个忽悠我的借口。。。。
以下是正文 网上说,这个网站是需要用post和cookie来请求,作为一个24K纯菜鸟,真不知道这是从哪里看出来的,希望各位大佬知道的可以指点一下。 忘记了在哪个博客上看到说,拉勾网的cookie是一次性的。所以不能把之前的cookie加进去(难怪我把之前的cookie加进去还是访问不了)。
我这里先通过session访问拉勾的搜索页面,获取到当前访问页面的cookie,然后再将参数post过去。 很容易就可以查到真正的URL是这个: post的信息是下面这些: 直接上代码:
def get_page_lagou(pageNo, city='广州', positionName='python', proxy=''): header = { 'Accept': 'application/json', 'Referer': 'https://m.lagou.com/search.html', 'User-Agent': 'Mozilla/5.0 (Linux; U; Android 2.3.6; \ en-us; Nexus S Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) \ Version/4.0 Mobile Safari/533.1' } params={ 'city': city, 'positionName': positionName, 'pageNo': pageNo, 'pageSize': 15 } star_page = 'https://m.lagou.com/search.html' post_page = 'https://m.lagou.com/search.json?' try: session = requests.Session() session.get(star_page, headers=header,proxies=proxy) cookie = session.cookies response = session.post(post_page, data=params, headers=header, cookies=cookie, \ timeout=5, proxies=proxy) dict_text = response.json()['content']['data']['page']['result'] except requests.exceptions.ConnectionError as e: print('Error', e.args) return None return dict_text然后输出的结果是这样的: 然后就可以很轻松的将想要的信息提取出来了。
第一次写博客纪念一下遇到的第一个反爬。
