1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 智联招聘python岗位_Python爬虫爬取智联招聘职位信息

智联招聘python岗位_Python爬虫爬取智联招聘职位信息

时间:2023-05-02 04:22:35

相关推荐

智联招聘python岗位_Python爬虫爬取智联招聘职位信息

import urllib2

import re

import xlwt

'''遇到不懂的问题?Python学习交流群:821460695满足你的需求,资料都已经上传群文件,可以自行下载!'''

class ZLZP(object):

def __init__(self,workname,citys):

# 记录查找工作名称

self.workname = workname

# 基础URL地址

self.url = '/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/0101 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 = pile(r'(.*?).*?

(.*?)(.*?)',re.S)

# 2.从html源代码中搜索

results = re.findall(pattern,html)

# 3.去除数据中标签

rs_data = []

for rs in results:

remove_b = pile(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()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。