接下来我们要分析有用数据,从搜索结果中我们需要的数据有:职位名称、公司名称、公司详情页地址、职位月薪:
通过网页元素定位找到这几项在HTML文件中的位置,如下图所示:
用正则表达式对这四项内容进行提取:
# 正则表达式进行解析
pattern = re.compile('<a style=.\*? target="\_blank">(.*?)</a>.*?' # 匹配职位信息
'<td class="gsmc"><a href="(.\*?)" target="\_blank">(.*?)</a>.*?' # 匹配公司网址和公司名称
'<td class="zwyx">(.*?)</td>', re.S) # 匹配月薪
# 匹配所有符合条件的内容
items = re.findall(pattern, html)
注意:解析出来的部分职位名称带有标签,如下图所示:
那么在解析之后要对该数据进行处理剔除标签,用如下代码实现:
for item in items:
job_name = item[0]
job_name = job_name.replace('<b>', '')
job_name = job_name.replace('</b>', '')
yield {
'job': job_name,
'website': item[1],
'company': item[2],
'salary'