资源简介

通过Python获取拉勾网职位信息,仅供大家学习参考!

资源截图

代码片段和文件信息

from bs4 import BeautifulSoup
import urllib.request
from com.test.model.RecruitInfo import RecruitInfo
import xlwt


# 插入表头数据
def insert_form_head(sheet key_array):
    # 头所对应的单元格样式
    head_style = xlwt.easyxf(‘font: bold on; align: wrap on vert centre horiz center‘)
    for index in range(len(key_array)):
        # 插入表头,参数含义:首行,尾行,首列,尾列,对应键,头部单元格样式
        sheet.write_merge(0 0 index index key_array[index]head_style)

# 获得工作年限
def get_work_year(main_tag):
    data = str(main_tag)
    soup = BeautifulSoup(data ‘html.parser‘)
    tag = soup.find(‘div‘ class_=‘li_b_l‘)
    handleText = str(tag)
    str1 = ‘->‘
    startIndex = handleText.find(str1 0)

    divTag = ‘

    endIndex = handleText.find(divTag 0)

    workYear = handleText[startIndex + len(str1):endIndex]

    return workYear

# 遍历获得职位信息
def get_main_recruit_info(soupsheet):
    global row_index
    for tag in soup.find_all(‘li‘ class_=‘con_list_item default_list‘):

      companyName = tag.get(‘data-company‘)
      positionName = tag.get(‘data-positionname‘)
      salary = tag.get(‘data-salary‘)

      re = RecruitInfo(companyName positionName salary get_work_year(tag))
      value = ‘‘
      # keyArray 列名(“公司名称“ “职位名称“ “薪资“ “工作年限/学历“)
      for column_index in range(len(keyArray)):
          if column_index == 0:
              value = re.companyName
          elif column_index == 1:
              value = re.position
          elif column_index == 2:
              value = re.salary
          elif column_index == 3:
              value = re.workYear
          sheet.write_merge(row_index row_index column_index column_indexvaluevalue_style)

      row_index = row_index + 1

# 创建并写入数据到excel,创建时必须add_sheet
def write_to_excel(sheettype):
      for index in range(30):
        soup = get_html_data(index+1 type)
        if index == 0:
          insert_form_head(sheet keyArray)
        else:
          get_main_recruit_info(soup sheet)



def get_html_data(indextype):
    # 网址
    url = “https://www.lagou.com/zhaopin/“+type+“/“+str(index)+“/?filterOption=1“
    # 请求
    headers = {‘User-Agent‘: ‘Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6‘}
    request = urllib.request.Request(urlheaders=headers)
    # 爬取结果
    response = urllib.request.urlopen(request)
    data = response.read()
    # 设置解码方式
    data = data.decode(‘utf-8‘)

    soup = BeautifulSoup(data ‘html.parser‘)

    return soup

# 类似于java的main函数
if __name__ == ‘__main__‘:
    # 键名,也就是excel的表头
    keyArray = (“公司名称“ “职位名称“ “薪资“ “工作年限/学历“)
    # 行数,从1开始取,第0行作为表头
    row_index = 1
    # 职位分类,也就是sheet的分类
    jobArray = (‘Android‘ ‘iOS‘ ‘Java‘)
    # 值所对应的单元格样式
    value_style = xlwt.easyxf(‘align: wrap on vert centre horiz center‘)
    # 创建excel工作簿
    excelFile = xlwt.Workbook()
    for jobType in jobArray:
        # 添加sheet
        sheet = excelFile.add_shee

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3818  2017-07-10 10:01  lagouDataCatch.py

     文件        616  2017-06-27 10:56  RecruitInfo.py

----------- ---------  ---------- -----  ----

                 4434                    2


评论

共有 条评论