专栏首页数据云团Python-数据解析-职位信息-上

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

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

一、 分析要解析的数据

第一个职位所在的标签 <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 表示为:

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

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

① 定义属性

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

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 库获取服务器返回的网页源代码。

# 定义一个 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")

本文分享自微信公众号 - 数据云团(SmartData)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 第61节:Java中的DOM和Javascript技术

    DOM是一门技术,是文档对象模型.所需的文档只有标记型文档,如我们所学的html文档(文档中的所有标签都封装成为对象了)

    达达前端
  • 用python的Django框架的内置User来做一个用户注册、登录、密码重置的应用

    写了几个简单的页面,突然想到这些页面需要注册并登录后的用户才可以观看该怎么实现呢?于是通过查找资料,做了一个简单的注册、登录、密码重置、密码找回的应用。

    小末快跑
  • IIS6下PHP的ISAPI和FastCGI性能比较 期待ii7

    在Windows IIS 6.0下配置PHP,通常有CGI、ISAPI和FastCGI三种配置方式,这三种模式都可以在IIS 6.0下成功运行,下面我就讲一下这...

    习惯说一说
  • 骚操作!用Python把公众号文章打包成pdf文件,不再怕自己的劳动成果被丢失

    做自媒体的人,尤其是做了一年甚至更久的自媒体人,尤其是通过自媒体还有一些小收入的人,他们最怕自己的公众号内容因为各种原因而丢失,那就太可怕了! 在做自媒体内容上...

    JAVAandPython君
  • 守护进程supervisor-1:部署/监控与注意事项

    supervisor是一个守护服务,当被守护的服务异常宕掉后,守护服务会自动将他重启。是一个非常重要的运维利器。尤其对于python,php这类运行时抛异常的服...

    千里行走
  • 页面参数传递

    在doctor_ask.html页面,把在url中的参数取下来,要使用一个方法getQueryString(),其中有一个方法是用来获取url中含有中文参数的:

    一觉睡到小时候
  • 三款适用于企业建站的CMS建站系统

    现在80%的企业网站都会采用cms建站系统来搭建,国内很多用于企业建站的cms,小熊优化的小编介绍几款有代表性的cms给大家。

    用户4831957
  • Mybatis 动态 SQL

    Mybatis 动态SQL,通过 ●if ●choose (when, otherwise) ●trim (where, set) ●foreach ...

    赵哥窟
  • Django后台和前台使用summernote富文本编辑器

    简单介绍一下怎么在django的管理后台和用户使用网页中使用django-summernote富文本编辑器,其他富文本编辑器类似。

    小末快跑
  • 用python的Django框架来做一个简单的web应用(三)

    在urls.py 中添加app_name='app_name'#app的名称。通过app_name加以区分。在html模板中可以调用<li><a href="{...

    小末快跑

扫码关注云+社区

领取腾讯云代金券