其实分析的步骤都是类似的,无外乎是先分析网站信息,页面组成,然后编写代码爬取数据,最后再保存数据 。
页面分析
我们选取一个岗位来分析 , 比如:Python 。
在 Boss 直聘的官网上搜索 Python,可以看到浏览器的 URL 变为如下:
把该地址复制到 Postman 尝试访问,发现无法得到正确的返回:
此时,再次回到浏览器,查看该请求下面的 headers,可以看到其中有一个 cookie,是很长的一串字符串 , 我们拷贝这个 cookie 到 Postman 中如何从浏览器的url中获取信息,再次请求:
成功了,看来 Boss 直聘网也只是做了简单的 cookies 验证 。
BeautifulSoup 使用
下面就是解析 HTML 数据了,我比较习惯用 BeautifulSoup 这个库来解析 。
from bs4 import BeautifulSoupimport requests'''更多Python学习资料以及源码教程资料 , 可以在群821460695 免费获取'''url = 'https://www.zhipin.com/job_detail/?query=python&city=101010100'res = requests.get(url, headers=header).textprint(res)content = BeautifulSoup(res, "html.parser")ul = content.find_all('ul')print(ul[12])
可以使用 BeautifulSoup 的 find 函数来查找 HTML 的元素标签,个人觉得还是挺方便的 。
编写代码
我们通过分析 HTML 网页可以知道,所有的工作信息都是保存在 ul 这个标签中的如何从浏览器的url中获取信息,我们可以通过上面的代码拿到页面中所有的 ul 标签,find_all 返回的是一个列表,然后再查看,工作具体位于第几个 ul 中,这样就拿到具体的工作信息了 。
确定需要抓取的数据
如图中所示 , 我们需要抓取红框中的信息,主要分为四部分 。
对于前三个信息,还是比较好抓取的 。
job_details_uri = job.find('h3', attrs={'class': 'name'}).find('a')['href']job_company = job.find('div', attrs={'class': 'company-text'}).find('h3', attrs={'class': 'name'}).find('a').textjob_salary = job.find('h3', attrs={'class': 'name'}).find('span', attrs={'class': 'red'}).text
对于 job 的详情信息,需要用到正则表达式来分割字符串,我们先来看下该部分的原始形式:
又可以把该部分切分成三块,site、year 和 edu 。可以使用正则的 group 特性 , 帮助我们完成切分,最后我写的正则如下:
rege = r'([u4e00-u9fa5 ]+)
猜你喜欢
- ?国际油价大涨 是否会影响春耕化肥价格?
- “儿童零龋齿计划”爱牙公益行动走进珠海市香洲区拱北小学
- 图片集群分布式存储和负载均衡
- 孩子五岁有龋齿了,怎么办?
- 买了新房,遇到开发商资金链断裂烂尾了,该怎么办?
- 洗澡的时候总忍不住撒尿,这正常吗?
- 枯草杆菌二联活菌颗粒儿童能长期服用吗?需要注意什么?
- 宝宝的黄疸数值怎么看?
- 孩子转学上海要什么手续 孩子转学上海要什么条件
