爬boss直聘网站

503 阅读1分钟

方案计划

一、     需求

爬取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’)