智联招聘python岗位_Python爬虫爬取智联招聘职位信息
import urllib2
import re
import xlwt
'''遇到不懂的問題?Python學習交流群:821460695滿足你的需求,資料都已經上傳群文件,可以自行下載!'''
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'(.*?).*?
(.*?)(.*?)',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()
總結
以上是生活随笔為你收集整理的智联招聘python岗位_Python爬虫爬取智联招聘职位信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三维立体图_原来三维立体图片是这样制作的
- 下一篇: 找出矩阵中绝对值最大的元素及其位置_线性