智联招聘python岗位_Python爬虫爬取智联招聘职位信息
import urllib2
import re
import xlwt
'''遇到不懂的問(wèn)題?Python學(xué)習(xí)交流群:821460695滿足你的需求,資料都已經(jīng)上傳群文件,可以自行下載!'''
class ZLZP(object):
def __init__(self,workname,citys):
# 記錄查找工作名稱(chēng)
self.workname = workname
# 基礎(chǔ)URL地址
self.url = 'http://sou.zhaopin.com/jobs/searchresult.ashx?'
# 工作名稱(chēng)
args = 'kw=%s&jl='%workname
# 工作地點(diǎn)
for city in citys:
# 判斷城市是否為最后一個(gè)
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'
}
# 根據(jù)頁(yè)碼獲取某一頁(yè)HTML源代碼
def get_page(self,pageNum):
# 1.根據(jù)頁(yè)碼拼接完整的url地址
getUrl = self.url + '&p=%s'%pageNum
# 2.創(chuàng)建request對(duì)象
request = urllib2.Request(getUrl,headers=self.headers)
try:
response = urllib2.urlopen(request)
except Exception ,e:
print '獲取第%s頁(yè)數(shù)據(jù)失敗,原因%s'%(pageNum,e)
return None
else:
return response.read()
# 從html代碼中提取總職位數(shù)
def get_total(self,html):
# 1.準(zhǔn)備正則表達(dá)式
pattern = re.compile(r'(.*?).*?
(.*?)(.*?)',re.S)# 2.從html源代碼中搜索
results = re.findall(pattern,html)
# 3.去除數(shù)據(jù)中標(biāo)簽
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
# 開(kāi)始爬蟲(chóng)函數(shù)
def start(self):
# 1.獲取第一頁(yè)查詢職位的HTML源代碼
html = self.get_page(1)
if html == None:
return
# 2.從html源代碼中提取總職位數(shù)
self.get_total(html)
# 3.for循環(huán)循環(huán)總頁(yè)數(shù)次(循環(huán)10次)
# 創(chuàng)建workbook對(duì)象
workbook = xlwt.Workbook(encoding='utf-8')
print type(self.workname)
# unicode 將一個(gè)str類(lèi)型的字符串轉(zhuǎn)換為unicode字符
# 中文編碼格式GBK,
print type(unicode(self.workname,encoding='utf-8'))
name = u'智聯(lián)表'+unicode(self.workname,encoding='utf-8')
print type(name)
sheet = workbook.add_sheet(name)
sheet.write(0,0,'職位名稱(chēng)')
sheet.write(0,1,'公司名稱(chēng)')
sheet.write(0,2,'職位月薪')
sheet.write(0,3,'工作地點(diǎn)')
# count 記錄當(dāng)前的行號(hào)
count = 1
for x in range(1,11):
# 1.根據(jù)頁(yè)碼獲取該頁(yè)的HTML源代碼
print '正在寫(xiě)入第%s頁(yè)數(shù)據(jù)....'%x
html = self.get_page(x)
if html == None:
continue
# 2.從html源代碼中提取數(shù)據(jù)
rs_data = self.get_data(html)
# 3.寫(xiě)入本地文件
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'智聯(lián)%s職位信息.xls'%unicode(self.workname,encoding='utf-8')
workbook.save(filename)
'''Python3之前:要存儲(chǔ)到本地的數(shù)據(jù),保證是UTF-8編碼要在Python中使用的字符,保證是Unicode類(lèi)型的字符unicode(self.workname,encoding='utf-8')字符串類(lèi)型 str 輸入的文本內(nèi)容、''或""包裹的文本'''
if __name__ == '__main__':
workname = raw_input('請(qǐng)輸入要查詢的工作名稱(chēng):')
# 存放工作城市
citys = []
# 只要城市小于5個(gè),繼續(xù)輸入城市
while len(citys) < 5:
city = raw_input('請(qǐng)輸入意向城市,最多輸入5個(gè),輸入0結(jié)束:')
if city == '0':
break
citys.append(city)
zlzp = ZLZP(workname,citys)
zlzp.start()
總結(jié)
以上是生活随笔為你收集整理的智联招聘python岗位_Python爬虫爬取智联招聘职位信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 三维立体图_原来三维立体图片是这样制作的
- 下一篇: 找出矩阵中绝对值最大的元素及其位置_线性