爬虫抓取网页数据( 求职招聘类网站中的数据查找和整理效率(组图) )

优采云 发布时间: 2022-03-04 04:20

  爬虫抓取网页数据(

求职招聘类网站中的数据查找和整理效率(组图)

)

  

  我们在工作中使用互联网上发布的各种信息。使用搜索引擎查找和组织需要花费大量时间。现在python可以帮助我们,利用爬虫技术,提高数据搜索和组织的效率。

  我们来看一个爬虫案例——在求职类网站中抓取数据。使用环境:win10+python3+Juypter Notebook

  第一步:分析网页

  第一步:分析网页

  要爬取网页,首先要分析网页结构。

  现在很多网站使用Ajax(异步加载)技术,打开网页,先给大家看上面的一些东西,剩下的慢慢加载。所以你可以看到很多网页,慢慢的刷,或者一些网站随着你的移动,很多信息都在慢慢加载。这种网页的优点是网页加载速度非常快。

  但这项技术不利于爬虫的爬行。我们可以使用chrome浏览器小部件进行分析,进入网络分析界面。界面如下:

  

  这时候是空白的,我们刷新一下,可以看到一连串的网络请求。

  

  然后我们开始寻找可疑的网络资源。首先,图片、css等可以跳过。一般来说,重点是xhr这种类型的requests,如下:

  

  这种数据一般都是json格式,我们也可以尝试在过滤器中输入json进行过滤查找。

  

  上图找到了两个xhr请求,从字面意思看很可能是我们需要的信息,右键在另一个界面打开。

  

  我们可以在右边的方框中切换到“Preview”,然后点击content-positionResult查看,可以看到位置的信息,以键值对的形式呈现。这是json格式,特别适合网页数据交换。

  第二步,URL构建

  在“Headers”中,我们看到了网页地址。通过观察网页地址,我们可以发现并推断出这一段是固定的,剩下的我们发现有一个city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false&isSchoolJob=0

  

  查看请求发送参数列表,可以确定city参数是城市,pn参数是页数,kd参数是job关键字。

  

  我们看一下位置,一共有30页,每页有15条数据,所以我们只需要构造一个循环遍历每一页的数据。

  

  第三步,编写爬虫脚本,编写代码

  需要注意的是,由于这个网页的格式是json,那么我们可以很好的读取json格式的内容。这里我们切换到预览,然后点击content-positionResult-result,可以先找到一个列表,然后点击查看各个位置的内容。为什么从这里看?一个好处就是知道json文件的层次结构,方便后面编码。

  

  具体代码展示:

  import requests,jsonfrom openpyxl import Workbook#http请求头信息headers={&#39;Accept&#39;:&#39;application/json, text/javascript, */*; q=0.01&#39;,&#39;Accept-Encoding&#39;:&#39;gzip, deflate, br&#39;,&#39;Accept-Language&#39;:&#39;zh-CN,zh;q=0.8&#39;,&#39;Connection&#39;:&#39;keep-alive&#39;,&#39;Content-Length&#39;:&#39;25&#39;,&#39;Content-Type&#39;:&#39;application/x-www-form-urlencoded; charset=UTF-8&#39;,&#39;Cookie&#39;:&#39;user_trace_token=20170214020222-9151732d-f216-11e6-acb5-525400f775ce; LGUID=20170214020222-91517b06-f216-11e6-acb5-525400f775ce; JSESSIONID=ABAAABAAAGFABEF53B117A40684BFB6190FCDFF136B2AE8; _putrc=ECA3D429446342E9; login=true; unick=yz; showExpriedIndex=1; showExpriedCompanyHome=1; showExpriedMyPublish=1; hasDeliver=0; PRE_UTM=; PRE_HOST=; PRE_SITE=; PRE_LAND=https%3A%2F%2Fwww.lagou.com%2F; TG-TRACK-CODE=index_navigation; Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1494688520,1494690499,1496044502,1496048593; Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1496061497; _gid=GA1.2.2090691601.1496061497; _gat=1; _ga=GA1.2.1759377285.1487008943; LGSID=20170529203716-8c254049-446b-11e7-947e-5254005c3644; LGRID=20170529203828-b6f*敏*感*词*c8e-446b-11e7-ba7f-525400f775ce; SEARCH_ID=13c3482b5dd*敏*感*词*bb7bfda721bbe6d71c7; index_location_city=%E6%9D%AD%E5%B7%9E&#39;,&#39;Host&#39;:&#39;www.lagou.com&#39;,&#39;Origin&#39;:&#39;https://www.lagou.com&#39;,&#39;Referer&#39;:&#39;https://www.lagou.com/jobs/list_Python?&#39;,&#39;User-Agent&#39;:&#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36&#39;,&#39;X-Anit-Forge-Code&#39;:&#39;0&#39;,&#39;X-Anit-Forge-Token&#39;:&#39;None&#39;,&#39;X-Requested-With&#39;:&#39;XMLHttpRequest&#39;}def get_json(url, page, lang_name): data = {&#39;first&#39;: "true", &#39;pn&#39;: page, &#39;kd&#39;: lang_name,&#39;city&#39;:"北京"}#POST请求 json = requests.post(url,data,headers=headers).json() list_con = json[&#39;content&#39;][&#39;positionResult&#39;][&#39;result&#39;] info_list = [] for i in list_con: info = [] info.append(i[&#39;companyId&#39;]) info.append(i[&#39;companyFullName&#39;]) info.append(i[&#39;companyShortName&#39;]) info.append(i[&#39;companySize&#39;]) info.append(str(i[&#39;companyLabelList&#39;])) info.append(i[&#39;industryField&#39;]) info.append(i[&#39;financeStage&#39;]) info.append(i[&#39;positionId&#39;]) info.append(i[&#39;positionName&#39;]) info.append(i[&#39;positionAdvantage&#39;])# info.append(i[&#39;positionLables&#39;]) info.append(i[&#39;city&#39;]) info.append(i[&#39;district&#39;])# info.append(i[&#39;businessZones&#39;]) info.append(i[&#39;salary&#39;]) info.append(i[&#39;education&#39;]) info.append(i[&#39;workYear&#39;]) info_list.append(info) return info_listdef main(): lang_name = input(&#39;职位名:&#39;) page = 1 url = &#39;http://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false&#39; info_result=[] title = [&#39;公司ID&#39;,&#39;公司全名&#39;,&#39;公司简称&#39;,&#39;公司规模&#39;,&#39;公司标签&#39;,&#39;行业领域&#39;,&#39;融资情况&#39;,"职位编号", "职位名称","职位优势","城市","区域","薪资水平",&#39;教育程度&#39;, "工作经验"] info_result.append(title) #遍历网址 while page < 31: info = get_json(url, page, lang_name) info_result = info_result + info page += 1#写入excel文件 wb = Workbook() ws1 = wb.active ws1.title = lang_name for row in info_result: ws1.append(row) wb.save(&#39;职位信息3.xlsx&#39;)main()

  打开excel文件,查看数据是否访问成功:

  

  我们看到招聘类网站中捕获的数据成功保存在excel表中。

  结尾

  

  过去精选

  Python可视化库你了解多少?带你去探索

  人工智能方向——智能图像识别技术(二)

  人工智能方向——智能图像识别技术(一)

  在 Python 中开始使用爬虫的 7 个技巧

  使用数据可视化有什么好处?

  

  关注雷克

  学干货

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线