鱼C论坛

 找回密码
 立即注册
查看: 1790|回复: 1

[见证历程] 利用python爬取51job工作岗位信息,并导入excel

[复制链接]
发表于 2020-5-15 23:49:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ontheway168 于 2020-5-16 00:13 编辑
  1. requests爬虫.py文件
  2. import re
  3. import requests
  4. from excel_write import excel_init
  5. workbook, worksheet = excel_init()
  6. #获取总页码数
  7. def get_pages():
  8.     #模拟一个虚拟网站
  9.     user_header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
  10.     #对应地区测试工程师搜索网址
  11.     web_url = 'https://search.51job.com/list/030800,000000,0000,00,9,99,%25E6%25B5%258B%25E8%25AF%2595%25E5%25B7%25A5%25E7%25A8%258B%25E5%25B8%2588,2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare='
  12.     res = requests.get(web_url, headers=user_header)
  13.     res.encoding = 'gbk'
  14.     pages = int(re.findall('<span class="td">共(.*?)页,到第</span>', res.text, re.S)[0].strip())
  15.     return pages

  16. row = 1

  17. for page in range(1, get_pages()+1):
  18.     #模拟一个虚拟网站
  19.     user_header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}

  20.     web_url = f'https://search.51job.com/list/030800,000000,0000,00,9,99,%25E6%25B5%258B%25E8%25AF%2595%25E5%25B7%25A5%25E7%25A8%258B%25E5%25B8%2588,2,{page}.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare='

  21.     res = requests.get(web_url, headers=user_header)
  22.     res.encoding = 'gbk'

  23.     # print(res.text)
  24.     '''
  25.     <div class="el">
  26.             <p class="t1 tg1">
  27.                 <em class="check" name="delivery_em"></em>
  28.                 <input class="checkbox" type="checkbox" name="delivery_jobid" value="120608298" jt="0" style="display:none">
  29.                 <span>
  30.                     <a target="_blank" title="测试工程师" href="https://jobs.51job.com/dongguan/120608298.html?s=01&t=0">
  31.                         测试工程师                </a>
  32.                 </span>
  33.                                                                     <img width="30" height="20" src="//img01.51jobcdn.com/im/jobs/tag_xiaozhao.png?20190903" alt="校招">
  34.                                     </p>
  35.             <span class="t2"><a target="_blank" title="东莞新能德科技有限公司" href="https://jobs.51job.com/all/co5796557.html">东莞新能德科技有限公司</a></span>
  36.             <span class="t3">东莞</span>
  37.             <span class="t4"></span>
  38.             <span class="t5">05-15</span>
  39.         </div>
  40.     '''
  41.     lines = re.findall('<div class="el">(.*?)</div>', res.text, re.S)

  42.     for line in lines:
  43.         temp = re.findall('<a target="_blank" title="(.*?)" href', line, re.S)
  44.         job = temp[0].strip()
  45.         worksheet.write(row, 0, job)
  46.         company = temp[1].strip()
  47.         worksheet.write(row, 1, company)
  48.         address = re.findall('<span class="t3">(.*?)</span>', line, re.S)[0].strip()
  49.         worksheet.write(row, 2, address)
  50.         salary = re.findall('<span class="t4">(.*?)</span>', line, re.S)[0].strip()
  51.         worksheet.write(row, 3, salary)
  52.         datetime = re.findall('<span class="t5">(.*?)</span>', line, re.S)[0].strip()
  53.         worksheet.write(row, 4, datetime)
  54.         row += 1
  55.         # print(job,company,address,salary,datetime)

  56. workbook.save('./51job岗位信息.xls')


  57. excel_write.py文件
  58. import xlwt
  59. #创建一个excel文件,创建表单,写
  60. def excel_init():
  61.     workbook = xlwt.Workbook(encoding='utf-8')
  62.     worksheet = workbook.add_sheet('51job岗位信息')

  63.     colNames = ['岗位名称', '公司名称', '地址', '薪资', '发布时间']
  64.     for i in range(len(colNames)):
  65.         worksheet.write(0, i, colNames[i])#(行号,列号,内容),行列号从0开始
  66.     return workbook, worksheet

  67. [/i]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-19 14:34:54 | 显示全部楼层
可以嫖走学习吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 23:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表