免责声明:本文所记录的技术手段及实现过程,仅作为爬虫技术学习使用,不对任何人完全或部分地依据本文的全部或部分内容从事的任何事情和因其任何作为或不作为造成的后果承担任何责任。
爬取需求:从网站【www.shixiseng.com】上,任意查询条件下,爬取前5页工作岗位的企业名称、工作岗位、薪资水平、工作地点等信息;
爬取工具:chrome浏览器、pycharm
Python库:requests、BeautifulSoup
01
网站结构分析
通过输入url【www.shixiseng.com】,打开实习僧网站,点击【搜索】按钮打开查询结果页面
通过翻页按钮找到每页对应的url链接信息:
https://www.shixiseng.com/interns?page=1&type=intern&keyword=&area=&months=&days=°ree=&official=&enterprise=&salary=-0&publishTime=&sortType=&city=%E5%85%A8%E5%9B%BD&internExtend=
https://www.shixiseng.com/interns?page=2&type=intern&keyword=&area=&months=&days=°ree=&official=&enterprise=&salary=-0&publishTime=&sortType=&city=%E5%85%A8%E5%9B%BD&internExtend=
https://www.shixiseng.com/interns?page=3&type=intern&keyword=&area=&months=&days=°ree=&official=&enterprise=&salary=-0&publishTime=&sortType=&city=%E5%85%A8%E5%9B%BD&internExtend=
需要爬取的字段需要点击岗位标题的超链接,在打开新的页面中才能找到,因此,我们需要先爬取所有岗位详情对应的url。在chrome浏览器中,在岗位标题上右键,点击【检查】,在打开的页面中定位需要获取url的html定位信息。
在chrome工具分析html文件,找到获取岗位详情的关键定位信息。
综上所述,先通过当前请求页面打开岗位列表,通过爬取列表的岗位信息,拿到岗位的详情url,再通过详情的url爬取需要的相关字段。
02
爬取详情页URL
根据上面分析的网站结构,开始创建python工程并编写代码:
岗位列表html解析定位信息:'.intern-wrap.intern-item'
岗位详情url解析定位信息:.f-l.intern-detail__job a
运行代码,结果如下:
爬取岗位信息详情url成功!
03
爬取详情页公司
继续编写代码,打开详情页的url,在打开的详情页提取公司信息
分析详情页,公司信息的html定位信息为:.com_intro .com-name
继续编写解析代码:
运行代码:
发现获取的公司信息存在空格和空行,将空格和空行去掉:
再次运行代码:
爬取公司信息成功!
04
爬取详情页岗位
分析详情页,岗位信息的关键定位信息为:.new_job_name span
编写代码,提取岗位信息
运行代码,结果如下:
爬取岗位信息成功!
05
爬取详情页工资范围
分析详情页,工资范围的关键提取信息为:.job_money.cutom_font
编写代码提取工资范围信息:
运行结果为:
工资范围信息爬取成功,但是显示是乱码,应该是网站防止关键信息被爬取,对工资范围信息的数据进行了加密处理。最简单的解码方式就是重新进行utf8编码,分别建立utf8编码和数字0~9的对应关系,爬取信息后根据0~9的对应关系批量替换,实现数字的展示。
先随便复制一份工资信息,看看编码后是什么内容:
通过中间的符号”-”、”/”对比来看,得出如下关系:
300 = \xee\xa3\xb2\xef\xa2\x9e\xef\xa2\x9e
400 = \xef\x8b\x8a\xef\xa2\x9e\xef\xa2\x9e
天 = \xe5\xa4\xa9
不难看出,3段”\”包含的内容为1个字符,所以得出如下结论:
0 = \xef\xa2\x9e
3 = \xee\xa3\xb2
4 = \xef\x8b\x8a
继续在页面复制不同的数字和单位进行打印,找出可能出现的所有对应关系,本文不再演示。
编码将上述推断出来的映射关系进行转换:
运行结果如下:
因为没有全部进行映射,所以还存在乱码,工资范围信息爬取成功!
06
爬取详情页工作地点
分析详情页,工作地点的提取关键信息为:.com_position
编写代码进行提取:
运行代码结果如下:
工作地点信息爬取成功!
所有需要爬取的信息都已经成功爬取,爬虫编码完成!
所有示例代码均可通过微信公众号回复关键字【pachong23】下载!