前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python-数据解析-职位信息-下

Python-数据解析-职位信息-下

作者头像
小团子
发布2019-07-18 15:18:17
6060
发布2019-07-18 15:18:17
举报
文章被收录于专栏:数据云团数据云团

上一节代码如下

代码语言:javascript
复制
import re
import urllib.request

class Spider(object):
  def __init__(self):
    # 起始页位置
    self.begin_page = int(input("请输入起始页:"))
    # 终止页位置
    self.end_page = int(input("请输入终止页:"))
    # 基本 URL
    self.base_url = "http://hr.tencent.com/"
  
  def load_page(url):
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}
    for page in range(self.begin_page, self.end_page + 1):
      url = self.base_url + "position.php?&start=" + str((page -1)*10 + "#a")
      request = urllib.request.Request(url, headers=headers)
      # 获取每页 HTML 源代码字符串
      response = urllib.request.urlopen(request)
      html = response.read().decode("utf-8")
      return html

一、使用 lxml 库解析网页数据

代码语言:javascript
复制
<tr class="even">
          <td class="l square"><a target="_blank" href="position_detail.php?id=49104&amp;keywords=&amp;tid=0&amp;lid=0">CDG-FiT-HRBP(深圳)</a></td>
          <td>职能类</td>
          <td>1</td>
          <td>深圳</td>
          <td>2019-04-03</td>
</tr>

① 查找所有的职位详情链接。

详情链接位于 <a> 中,对应着该标签的 href 属性的值。

代码语言:javascript
复制
//td[@class="l square"]/a/@href

② 查找所有的职位名称。

表示职位名称的文本对应着标签 <a> 的文本。

代码语言:javascript
复制
//td[@class="l square"]/a/text()

③ 查找其它元素。

代码语言:javascript
复制
//tr[@class="even"]/td[2] | //tr[@class="odd"]/td[2]

查找招聘人数

代码语言:javascript
复制
//tr[@class="even"]/td[3] | //tr[@class="odd"]/td[3]

查找工作地点

代码语言:javascript
复制
//tr[@class="even"]/td[4] | //tr[@class="odd"]/td[4]

查找发布时间

代码语言:javascript
复制
//tr[@class="even"]/td[5] | //tr[@class="odd"]/td[5]

在 parse_page() 方法中实现

代码语言:javascript
复制
from lxml import etree

def parse_page(self, html):
  # 从字符串中解析 HTML 文档或片段,返回根节点
  root = etree.HTML(html)
  
  # 查找所有的详情链接
  links = root.xpath('//td[@class="l square"]/a/@href')
  
  # 查找所有的职位名称
  names = root.xpath('//td[@class="l square"]/a/text()')
  
  # 查找所有的职位类别
  categorys = root.xpath('//tr[@class="even"]/td[2] | //tr[@class="odd"]/td[2]')
  
  # 查找所有的招聘人数
  counts = root.xpath('//tr[@class="even"]/td[3] | //tr[@class="odd"]/td[3]')
  
  # 查找所有的工作地点
  locations = root.xpath('//tr[@class="even"]/td[4] | //tr[@class="odd"]/td[4]')
  
  # 查找所有的发布时间
  publish_times = root.xpath('//tr[@class="even"]/td[5] | //tr[@class="odd"]/td[5]')
  
  # 定义空列表,保存元素的信息
  items = []
  for i in range(0, len(names)):
    item = {}
    item['职位名称'] = names[i]
    item['详情链接'] = self.base_url + links[i]
    item['职位类别'] = categorys[i].text
    item['招聘人数'] = counts[i].text
    item['工作地点'] = locations[i].text
    item['发布时间'] = publish_times[i].text
    items.append(item)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档