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

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

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

爬取腾讯社会招聘网站的招聘信息,包括职位名称、职位类别、招聘人数、工作地点、发布时间、以及每个职位详情的链接。

一、 分析要解析的数据

第一个职位所在的标签 <a>,该标签中既有属性,又有文本。

  • href 属性:

每个职位详情的链接(后半部分)。如果要了解职位的详情,需要在 href 属性值的前面加上 http://hr.tencent.com/,拼接成一个完整的链接。

  • 文本:

表示职位的名称。

再查看其它相邻的标签 <td>,可以发现,这些标签所对应的文本分别表示“职位类别”、“招聘人数”、“工作地点”、“发布时间”。因此,只要拿到这些标签的文本,就能拿到想要的数据。

还可以查看其它标签的内容,以确认所要解析的数据。查看下一个标签 <tr class="odd">,该标签的内容对应着第二条招聘信息。因此,<tr class="even"> 和 <tr class="odd"> 标签中的文本和 href 属性都是要筛选出来的数据。

二、 使用 urllib 库爬取社招网数据

创建一个 spider.py 文件,在文件中定义一个负责爬取网页的类 Spider,只要调用 Spider 对象的方法,就可以将招聘网站的 HTML 爬取下来。

可以发现,start 参数的初始值为 0,之后每增加一页就递增 10,按照这个规律,要想爬取所有页面的内容,可以将 URL 表示为:

代码语言:javascript
复制
"http://hr.tencent.com/position.php?&start=" + (页码 -1)*10 + '#a'

通过 URL 可以连续发送页面请求。

① 定义属性

在 Spider 类的 __init__() 方法中,定义表示起始页、终止页、基本 URL 的属性。

代码语言:javascript
复制
class Spider(object):
  def __init__(self):
    # 起始页位置
    self.begin_page = int(input("请输入起始页:"))
    # 终止页位置
    self.end_page = int(input("请输入终止页:"))
    # 基本 URL
    self.base_url = "http://hr.tencent.com/"

② 发送爬取网页的请求

在 Spider 类中,定义一个用于发送请求的方法 load_page()。在 load_page() 方法中,准备好请求头和完整的 URL,接着使用 urllib 库获取服务器返回的网页源代码。

代码语言:javascript
复制
# 定义一个 url 请求网页的方法
# page 需要请求的参数
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")
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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