①:從這個**可以發現,010000代表的就是北京的id,所以我們如果想要獲取到所有一線城市的python職位資訊,那麼就必須獲取到該城市的id.
②:我們需要將所有的職位資訊爬取下來,所以就需要挨個進入頁面,這時候我們就要考慮幾個問題a:如何獲取到這個頁面的url;b:那麼多頁,而且每個城市的頁數不一致,如何去控制?;c:進入頁面如何獲取職位資訊
我們可以將你想要獲取id的城市放入乙個列表,通過正則獲取所對應的id資訊,並將id放入列表中
# 獲取城市的id
cities =
['北京'
,'上海'
,'廣州'
,'深圳'
,'成都'
,'杭州'
,'重慶'
,'武漢'
,'蘇州'
,'天津'
,'南京'
,'西安'
,'鄭州'
,'長沙'
,'瀋陽'
,'青島'
,'寧波'
,'東莞'
,'無錫'
] ids =
defcities_ids()
:for city in cities:
# 第一次正則獲取各個城市的網頁
)# 第二次正則來獲取各個城市的id
id= re.findall(r'id="citycode" value="(.*?)"'
, text_city)id[
0])
通過上一步以及獲取到了id資訊,所以這些城市對應的python職位的url就能夠寫出來,然後通過正則獲取頁數即可!
for
idin ids:
pageone =
''%(
id)text_page = requests.get(pageone, headers)
.content.decode(
'gbk'
)# 檢視有多少頁
pages = re.findall(r'共(.*?)頁'
, text_page)
pages_position =
int(pages[0]
)# 獲取每一頁的資料
for page in
range(1
, pages_position +1)
: url_page =
''%(
id, page)
通過前兩步以及能夠成功訪問到每一頁的招聘資訊,然後我們需要單個進入這些招聘網頁,來獲取職位資訊
# 招聘資訊網頁
url_zps_ = re.findall(r'.*?href="(.*?)"'
, text_page, re.dotall)
for i in
range
(len
(url_zps_)):
text_zp = s.get(url_zps_[i]
).content.decode(
'gbk'
,'ignore'
)# 獲崗位要求
mession_zps = re.findall(r'(.*?)
', text_zp, re.dotall)
iflen
(mession_zps)==0
:continue
# 去除雜物
for mession_zp in mession_zps:
mession_zp = re.sub(r'<.*?>',''
, mession_zp)
mession_zp = re.sub(r' ',''
, mession_zp)
mession_zp = re.sub(r'\r\n',''
, mession_zp)
mession_zp = re.sub(r' ',''
, mession_zp)
print
(mession_zp)
self.data_queue.put(
(mession_zp)
)
我們以及獲取到了所有的資料,現在要做的就是將爬取下來的職位資訊放入到txt檔案,方便我們製作詞云,儲存資料也很簡單.
with
open
('python.txt'
,'a'
, encoding=
'utf-8'
)as fp:
fp.write(self.data_queue.get(
))
用了乙個很簡單的方法來製作詞云,就不多做解釋了,不懂的查一查
def
ciyun()
:# 匯入
text =
open
(r'.\python.txt'
,'r'
, encoding=
'utf-8'
).read(
)# 去除無用的詞語
exclude =
# 進行分詞
cut_text = jieba.cut(text)
result =
' '.join(cut_text)
# 生成詞雲圖
wc = wordcloud(
# 字型路徑
font_path=r'.\deng.ttf'
,# 背景顏色
background_color=
'white'
, width=
500,
height=
350,
max_font_size=50,
stopwords=exclude
)wc.generate(result)
# 顯示
plt.figure(
'python'
) plt.imshow(wc)
plt.axis(
'off'
) plt.show(
)
我寫的時候用了多執行緒,資料量過於龐大,不使用多執行緒的話那將是乙個漫長的過程.
建立乙個queue安全佇列,生產者消費者模式,生產者負責獲取資訊,消費者負責儲存資訊.
爬取51job職位資訊
首先獲取一下所有城市對應的key值,找到所有城市所在的json字串,向json所在的js頁面傳送請求,獲取資訊,然後從第一頁獲取總的頁數,然後遍歷所有頁數,每到新的一頁,找到所有職位資訊的詳情頁url,遍歷詳情頁,獲取所要的職位資訊。請求並解析城市編碼函式 return 返回乙個字典 decode ...
爬取51job的資訊
coding utf 8 import scrapy from items import jobspideritem class jobspider scrapy.spider name job allowed domains 51job.com start urls def parse self,...
簡易爬蟲爬取51job招聘資訊
目標 上的python相關招聘資訊 入門級別 import re import urllib.request class grab object 定義類屬性 num 0 def init self 請求的 self.url 請求頭 self.headers defopenurl self 建立請求物...