文档章节

Python爬虫爬取智联招聘职位信息

zhaobig
 zhaobig
发布于 2017/09/11 20:35
字数 830
阅读 55
收藏 1
点赞 0
评论 0

目的:输入要爬取的职位名称,五个意向城市,爬取智联招聘上的该信息,并打印进表格中

#coding:utf-8 import urllib2
import re
import xlwt


class ZLZP(object):

    def __init__(self,workname,citys):
        # 记录查找工作名称  self.workname = workname
        # 基础URL地址  self.url = 'http://sou.zhaopin.com/jobs/searchresult.ashx?'  # 工作名称  args = 'kw=%s&jl='%workname
        # 工作地点  for city in citys:
            # 判断城市是否为最后一个  if city == citys[-1]:
                args += city
            else:
                args += city
                args += '%2B'  # kw=python&jl=北京%2B上海%2B南京%2B广州%2B深圳  # 拼接完整的url地址  self.url += args
        self.headers = {
            'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0'  }
    # 根据页码获取某一页HTML源代码  def get_page(self,pageNum):
        # 1.根据页码拼接完整的url地址  getUrl = self.url + '&p=%s'%pageNum
        # 2.创建request对象  request = urllib2.Request(getUrl,headers=self.headers)
        try:
            response = urllib2.urlopen(request)
        except Exception ,e:
            print '获取第%s页数据失败,原因%s'%(pageNum,e)
            return None  else:
            return response.read()

    # 从html代码中提取总职位数  def get_total(self,html):
        # 1.准备正则表达式  pattern = re.compile(r'<span class="search_yx_tj.*?em>(.*?)</em>',re.S)
        # 2.根据正则表达式从源代码中查找数据  rs = re.search(pattern,html)
        # 3.记录总职位数,计算总页数  total = int(rs.group(1))
        print '共搜索到%s个相关职位信息...'%total
        # 不能被60整除,总页码+1  if total%60 == 0:
            self.totalPage = total/60  else:
            self.totalPage = total/60+1  # 提取数据函数  def get_data(self,html):
        # 1.准备正则  # print html  pattern = re.compile(r'<table.*?class="newlist.*?<td class="zwmc.*?<a.*?>(.*?)</a>.*?<td class="gsmc.*?_blank">(.*?)</a>.*?<td class="zwyx">(.*?)</td.*?<td class="gzdd">(.*?)</td>',re.S)
        # 2.从html源代码中搜索  results = re.findall(pattern,html)
        # 3.去除数据中标签  rs_data = []
        for rs in results:
            remove_b = re.compile(r'<.*?>',re.S)
            name = re.sub(remove_b,'',rs[0])
            rs_tp = (name,rs[1],rs[2],rs[3])
            rs_data.append(rs_tp)
        return rs_data
    # 开始爬虫函数  def start(self):
        # 1.获取第一页查询职位的HTML源代码  html = self.get_page(1)
        if html == None:
            return  # 2.从html源代码中提取总职位数  self.get_total(html)
        # 3.for循环循环总页数次(循环10次)  # 创建workbook对象  workbook = xlwt.Workbook(encoding='utf-8')
        print type(self.workname)
        # unicode 将一个str类型的字符串转换为unicode字符  # 中文编码格式GBK,  print type(unicode(self.workname,encoding='utf-8'))
        name = u'智联表'+unicode(self.workname,encoding='utf-8')
        print type(name)
        sheet = workbook.add_sheet(name)
        sheet.write(0,0,'职位名称')
        sheet.write(0,1,'公司名称')
        sheet.write(0,2,'职位月薪')
        sheet.write(0,3,'工作地点')
        # count 记录当前的行号  count = 1  for x in range(1,11):
            # 1.根据页码获取该页的HTML源代码  print '正在写入第%s页数据....'%x
            html = self.get_page(x)
            if html == None:
                continue  # 2.从html源代码中提取数据  rs_data = self.get_data(html)
            # 3.写入本地文件  for rs in rs_data:
                sheet.write(count,0,rs[0])
                sheet.write(count,1,rs[1])
                sheet.write(count,2,rs[2])
                sheet.write(count,3,rs[3])
                count+=1  # 保存文件  print type(self.workname)
        filename = u'智联%s职位信息.xls'%unicode(self.workname,encoding='utf-8')
        workbook.save(filename)

'''  Python3之前:  要存储到本地的数据,保证是UTF-8编码  要在Python中使用的字符,保证是Unicode类型的字符  unicode(self.workname,encoding='utf-8')  字符串类型 str 输入的文本内容、''或""包裹的文本 '''   if __name__ == '__main__':

    workname = raw_input('请输入要查询的工作名称:')
    # 存放工作城市  citys = []
    # 只要城市小于5个,继续输入城市  while len(citys) < 5:
        city = raw_input('请输入意向城市,最多输入5个,输入0结束:')
        if city == '0':
            break  citys.append(city)

    zlzp = ZLZP(workname,citys)
    zlzp.start()

© 著作权归作者所有

共有 人打赏支持
zhaobig
粉丝 0
博文 5
码字总数 5529
作品 0
省直辖县级行政区划
python3 scrapy爬取智联招聘存mongodb

写在前面,这次写智联招聘的爬虫是其次,主要的是通过智联招聘上的数据信息弄一个数据挖掘的小项目,这一篇主要是如何一气呵成的将智联招聘上的招聘信息给爬下来 (一)scrapy框架的使用 sc...

徐代龙 ⋅ 05/01 ⋅ 0

使用Python爬取网络数据并使用SSAS进行数据分析

主要内容 使用Python分别爬取百度搜索页面结果和智联招聘的6大类职业信息,数据主要使用SQLServer SSAS进行分析,并有少量的使用Python分析结果。 对于百度搜索的数据和智联招聘的页面数据是...

python达人 ⋅ 05/12 ⋅ 0

[python爬虫] 招聘信息定时系统 (一).BeautifulSoup爬取信息并存储MySQL

这系列文章主要讲述,如何通过Python爬取招聘信息,且爬取的日期为当前天的,同时将爬取的内容保存到数据库中,然后制作定时系统每天执行爬取,最后是Python调用相关库发送短信到手机。 最近...

Eastmount ⋅ 2017/04/22 ⋅ 0

一个月入门Python爬虫,快速获取大规模数据

数据是创造和决策的原材料,高质量的数据都价值不菲。而利用爬虫,我们可以获取大量的价值数据,经分析可以发挥巨大的价值,比如: 豆瓣、知乎:爬取优质答案,筛选出各话题下热门内容,探索...

Python开发者 ⋅ 04/25 ⋅ 0

Python爬虫入门并不难,甚至进阶也很简单

互联网的数据爆炸式的增长,而利用 Python 爬虫我们可以获取大量有价值的数据: 1.爬取数据,进行市场调研和商业分析 爬取知乎优质答案,筛选各话题下最优质的内容; 抓取房产网站买卖信息,...

菜鸟学python ⋅ 06/07 ⋅ 0

python爬虫:爬取拉勾网职位并分析

点击上方“程序人生”,选择“置顶公众号” 第一时间关注程序猿(媛)身边的故事 作者 闲庭信步 原文 https://blog.csdn.net/danspace1/article/details/80197106 如需转载,请联系原作者。 ...

csdnsevenn ⋅ 05/29 ⋅ 0

python求职Top10城市,来看看是否有你所在的城市

前言 从智联招聘爬取相关信息后,我们关心的是如何对内容进行分析,获取用用的信息。 本次以上篇文章“5分钟掌握智联招聘网站爬取并保存到MongoDB数据库”中爬取的数据为基础,分析关键词为“...

lemon ⋅ 2017/05/23 ⋅ 0

5分钟掌握智联招聘网站爬取并保存到MongoDB数据库

前言 本次主题分两篇文章来介绍: 一、数据采集 二、数据分析 第一篇先来介绍数据采集,即用python爬取网站数据。 1 运行环境和python库 先说下运行环境: python3.5 windows 7, 64位系统 ...

lemon ⋅ 2017/05/22 ⋅ 0

Python利用Scrapy爬取智联招聘和前程无忧的招聘数据

爬虫起因   前面两个星期,利用周末的时间尝试和了解了一下Python爬虫,紧接着就开始用Scrapy框架做了一些小的爬虫,不过,由于最近一段时间的迷茫,和处于对职业生涯的规划。以及对市场需...

镇屌要逆袭 ⋅ 2017/12/08 ⋅ 0

5个python爬虫教材,让小白也有爬虫可写,含视频教程!

认识爬虫   网络爬虫,如果互联网是一张蜘蛛网,网络爬虫既是一个在此网上爬行的蜘蛛,爬了多少路程即获取到多少数据。 python写爬虫的优势   其实以上功能很多语言和工具都能做,但是用...

柯西带你学编程 ⋅ 06/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周三乱弹 —— 这样的女人私生活太混乱了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 胖达panda :你经历过体验到人生的大起大落吗?我一朋友在10秒内体验了,哈哈。@小小编辑 请点一首《almost lover》送给他。 《almost love...

小小编辑 ⋅ 20分钟前 ⋅ 4

自己动手写一个单链表

文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。 一、概述 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对...

公众号_好好学java ⋅ 26分钟前 ⋅ 0

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部