1、项目简介
利用selenium实现抓取51job网站具体岗位信息,输入要求抓取的页数和岗位名称,实现岗位详情信息的抓取,字段信息如下:
- position——》职位信息
- salary——》薪资
- location——》工作地点
- experience——》工作经验
- edu——》学历要求
- benefits——》福利待遇
- job_info——》职位信息
- skills——》技能要求
- company——》公司名称
- company_type——》公司类型
- company_size——》公司规模
- industry——》所属行业
2、爬虫代码编写
本次项目需要使用的第三方库有:
- selenium——》获取网页源码,模拟搜索、鼠标点击等操作
- lxml——》网页源码解析
- openpyxl——》信息储存
载入所需的库
from selenium import webdriver # 载入webdriver对象
from selenium.webdriver.chrome.options import Options # 载入Option,方便后续用无头模式
import openpyxl # 用于写入文件
from lxml import etree # 用于网页解析
import time
import re
2.1、获取详情页链接
def get_urls(pageno, position): # pageno:需要获取的页数 position:需要爬取的职位
url = 'http://www.51job.com' # 首页链接
ch_option = Options()
ch_option.add_argument('--headless')
bro = webdriver.Chrome(options=ch_option) # 创建浏览器对象
bro.get(url) # 发起网页请求
time.sleep(2)
input_box = bro.find_element_by_id('kwdselectid')
# 在输入框中输入信息
input_box.send_keys(position)
time.sleep(2)
# 通过xpath寻找搜索按钮
submit_button = bro.find_element_by_xpath('/html/body/div[3]/div/div[1]/div/button')
# 模拟鼠标点击
submit_button.click()
time.sleep(2)
urls_list = []
for page in range(pageno):
page_text = bro.page_source
tree = etree.HTML(page_text)
urls_list