我是一隻放養的小爬蟲 拉鉤網半智能整站小爬蟲 === 筆者聲明:只用於學習交流,不用於其他途徑。源代碼已上傳github。githu地址: "https://github.com/Erma Wang/Spider" Python寫爬蟲的感覺那叫一個爽!100行代碼不到,爬取整站,貌似這樣下去拉鉤還不
我是一隻放養的小爬蟲--拉鉤網半智能整站小爬蟲
筆者聲明:只用於學習交流,不用於其他途徑。源代碼已上傳github。githu地址:https://github.com/Erma-Wang/Spider
Python寫爬蟲的感覺那叫一個爽!100行代碼不到,爬取整站,貌似這樣下去拉鉤還不加強伺服器麽?下麵看看半智能的效果,程式員嘛。。。不做外殼了。。。我只是一隻放養的小爬蟲,拉鉤看到就說對不起啰!!。哈哈,下麵看圖:
輸入命令後,小爬蟲開始工作了!
爬去結束後小爬蟲自動生成了一個XLS文件,一般的excel就能打開了
最後看看成果:
好了,效果看完了,看看小爬蟲怎麼製造出來的吧。。。
其中也沒有什麼難點的技術,不過pandas很值得學習,給個學習鏈接http://pandas.pydata.org,挺不錯的。。下麵貼一下代碼吧。。。github上面也有。
# -*- coding:utf-8 -*-
import re,json
from urllib import request
from pandas import DataFrame,Series
import pandas as pd
__author__ = "放養的小爬蟲"
# 處理字元串的函數
def ProcessingString(string):
string = string.encode('utf-8')
string = str(string).replace(r'\x','%').replace(r"'","")
string = re.sub('^b','',string)
return string
# 計算總共頁數
def SearchPageCount(position, city):
i = 0
type = 'true'
url = 'http://www.lagou.com/jobs/positionAjax.json?city='+city+'&first='+type+'&kd='+position+'&pn='+str(i+1)
with request.urlopen(url) as f:
data = f.read()
count = int(json.loads(str(data,encoding='utf-8',errors='ignore'))["content"]["totalPageCount"])
totalCount = int(json.loads(str(data,encoding='utf-8',errors='ignore'))["content"]["totalCount"])
print('本次搜索到%d個職位'%totalCount)
return count
def LaGouSpiderWithKeyWord(position, city):
positionTemp = ProcessingString(position)
cityTemp = ProcessingString(city)
# 獲取總共頁數
pageCount = SearchPageCount(positionTemp,cityTemp)
for i in range(0,pageCount):
if i ==0 :
type='true'
else:
type='false'
url = 'http://www.lagou.com/jobs/positionAjax.json?city='+cityTemp+'&first='+type+'&kd='+positionTemp+'&pn=1'
data = request.urlopen(url).read()
# 讀取Json數據
jsondata = json.loads(str(data,encoding='utf-8',errors='ignore'))['content']['result']
for t in list(range(len(jsondata))):
jsondata[t]['companyLabelListTotal']='-'.join(jsondata[t]['companyLabelList'])
jsondata[t].pop('companyLabelList')
if t == 0:
rdata=DataFrame(Series(data=jsondata[t])).T
else:
rdata=pd.concat([rdata,DataFrame(Series(data=jsondata[t])).T])
if i == 0:
totaldata=rdata
else:
totaldata=pd.concat([totaldata,rdata])
print('正在解析第%d頁...'%i)
totaldata.to_excel('lagou.xls',sheet_name='sheet1')
if __name__ == "__main__":
position = input('請輸入你要爬取的職位')
city = input('請輸入你要爬取的城市')
LaGouSpiderWithKeyWord(position, city)
作者聲明:只做學習交流,不用於其他途徑!!!