爬取boss直聘上面的数据遇见的问题解析

    科技2024-08-01  28

    概述

    boss直聘(https://www.zhipin.com/)是现在互联网招聘比较火热的一个网站,本篇文章主要是针对爬取boss直聘数据遇见的一些问题进行解析。 为什么要爬取boss直聘? 哈哈哈,当然是因为简单,啪,原因如下: (1)动态网页,爬起来难度更大,讲起来更有内容; (2)与一般情况不同,我们所需内容通过get请求获取不了,需进行页面分析。

    1、网页解析(寻找目标请求网址)

    boss直聘比起其他的动态网址爬取,我自我感觉是最简单的,哈哈,因为,目标请求网址很容易就能找到,它的位置就在第一个,然后我们打开header 我们很容易就能得到它的请求网址 url = “https://www.zhipin.com/job_detail/?query=%E7%88%AC%E8%99%AB&city=101250100&industry=&position=” 在此我们需要注意到,它的请求方法是GET,因此我们在后面爬取需要将它的请求方法设置为GET。 对网站进行解析完后,接下来我们写爬虫

    2、 爬虫

    1.先导入我们所需的包

    from urllib import request from urllib import parse url = "https://www.zhipin.com/job_detail/?query=python&city=101250100&industry=&position="

    2.设置请求头header: 为啥要设置请求头呢? 原因:因为我们要,因为boss直聘网站有自己的反爬虫机制,如果不给定一个请求头参数的话,则会被boss直聘网站开发者识别出来你是一个爬虫机制,甚至会封掉你的IP地址,这样,你就再也不能从这个网站里爬取数据了,为了安全起见,我们需要设定一个请求头参数来模拟浏览器行为,让它无法识别我们的行为是一个爬虫机制所引导的。

    headers ={ "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36", "referer": "https://www.zhipin.com/web/common/security-check.html?seed=adYW9BEBBrky4hO1yBOcGPQ85Dg%2BEt4j6t0B5yrsn9w%3D&name=b50f9365&ts=1602053080369&callbackUrl=%2Fjob_detail%2F%3Fquery%3Dpython%26city%3D101250100%26industry%3D%26position%3D&srcReferer=https%3A%2F%2Fwww.zhipin.com%2Fchangsha%2F%3Fsid%3Dsem_pz_bdpc_dasou_title", }

    3.调取python里面的爬虫包

    rep = request.Request(url=ur1,headers=headers,method="GET") resp = request.urlopen(rep) print(resp.read())

    运行完后它给我的是这么一串信息,但我们检查网页源代码,我们可以看到,里面的信息不止这些,但我们无法读懂,其实因为print返回的是一个bytes数据类型,在这我们需要利用decode进行解码。

    print(resp.read().decode("utf-8"))``

    遇见这种情况“您的操作太频繁,请稍后再询问”,对于一般的爬虫小孩来说,到这一步可能就会停止了,但是对于我们内行的人来说,其实是 我们的爬虫被网站反爬虫机制识别出来的,它给我们这些信息只是为了们哄我们。 因此我们需要设置多个请求头参数,至于为啥要设置多个请求头能,因为我们知道我们每一个点击行为都是一个请求浏览行为,为了不让它识别出来,因此我们需要我们的爬虫模拟的更像浏览器行为。

    Processed: 0.010, SQL: 8