方案计划
一、 需求
爬取boss直聘关于人工智能行业的相关岗位,包括工作年限,公司规模,薪资
二、 计划
用浏览器驱动,用get方法请求网页,用find_elements_by_css_selector查找信息,text获取元素的文本,并以表格的形式写入word文档中。
三、项目具体实现
1. 基本开发环境:
Pyhon 3.8
Pycham
2. 相关模块
import time
from selenium import webdriver
import re
import docx
3. 查找人工智能页面一共有十页,找到网页url的规律
for i in range(1,11):
print('当前正在爬取第{}页'.format(i))
url = 'www.zhipin.com/c100010000/…, i)
4.导入浏览器驱动,用get方法请求网页
driver = webdriver.Chrome()
driver.get(url)
driver.implicitly_wait(10)# 隐式等待十秒,防止被反爬
5. 信息全部保存在li标签中
lis = driver.find_elements_by_css_selector('.job-list li')
6. 遍历查找对应的信息,用find_element_by_css_selector查找元素,text获取元素的文本,并用正则表达式进一步匹配信息
for li in lis:
职位
title = li.find_element_by_css_selector('.job-name a').get_attribute('title')
# 薪资
money = li.find_element_by_css_selector('.job-limit .red').text
工作年限
limit = li.find_element_by_css_selector('.job-limit p').text
公司名称
company_name = li.find_element_by_css_selector('.company-text .name a').text
公司规模
company_type = li.find_element_by_css_selector('.company-text p').text
company_vline = ''.join(re.findall('\d*-\d*人', company_type))
if not company_vline:
company_vline = '10000人以上'
print(title, money, limit, company_name, company_vline, sep='|')
7. 将爬到的信息写入word文档中,建立一个表格,写入
doc = docx.Document() # 创建一个Document对象
插入一个1行5列的表格
table = doc.add_table(rows=1, cols=5, style='Table Grid')
hdr_cells1 = table.rows[0].cells
hdr_cells1[0].text = '职位'
hdr_cells1[1].text = '薪资'
hdr_cells1[2].text = '工作年限'
hdr_cells1[3].text = '公司名称'
hdr_cells1[4].text = '公司规模'
8. 在爬取信息的时候写入
table = doc.tables[0]
table.add_row()
table.cell(num, 0).text = title
table.cell(num, 1).text = money
table.cell(num, 2).text = limit
table.cell(num, 3).text = company_name
table.cell(num, 4).text = company_vline
9. 将信息保存入人工智能word文档
doc.save(‘人工智能.doc’)