前言
本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
作者:Python進階者
現在在疫情階段,想找一份不錯的作業變得更為困難,很多人會選擇去網上看招聘資訊,可是招聘資訊有一些是錯綜復雜的,而且不能把全部的資訊全部羅列出來,以外賣的58招聘網站來看,資料整理的不清晰,
專案目標
獲取招聘資訊,并批量把地點、 公司名、工資 、下載保存在txt檔案,
專案準備
軟體:PyCharm
需要的庫:requests、lxml、fake_useragent
網站如下:
https://gz.58.com/job/pn2/?param7503=1&from=yjz2_zhaopin&PGTID=0d302408-0000-3efd-48f6-ff64d26b4b1c&ClickID={}
點擊下一頁時,ClickID={}每增加一頁自增加1,用{}代替變換的變數,再用for回圈遍歷這網址,實作多個網址請求,
反爬措施
該網站上的反爬主要有兩點:
1、 直接使用requests庫,在不設定任何header的情況下,網站直接不回傳資料
2、同一個ip連續訪問多次,直接封掉ip,起初我的ip就是這樣被封掉的,
為了解決這兩個問題,最后經過研究,使用以下方法,可以有效解決,
1、獲取正常的 http請求頭,并在requests請求時設定這些常規的http請求頭,
2、使用 fake_useragent ,產生隨機的UserAgent進行訪問,
專案實作
1、定義一個class類繼承object,定義init方法繼承self,主函式main繼承self,匯入需要的庫和網址,代碼如下所示,
import requests
from lxml import etree
from fake_useragent import UserAgent
class Zhaopin(object):
def __init__(self):
self.url = "https://gz.58.com/job/pn2/?param7503=1&from=yjz2_zhaopin&PGTID=0d302408-0000-3efd-48f6-ff64d26b4b1c&ClickID={}" # /zhuanchang/:搜索的名字的拼音縮寫
def main(self):
pass
if __name__ == '__main__':
Spider = Zhaopin()
Spider.main()
2、隨機產生UserAgent,
for l in one:
o = l.xpath('.//a/span[1]/text()')[0].strip()
t = l.xpath('.//a//span[@]/text()')[0].strip()
f = l.xpath('.//p[@]/text()')
thr = l.xpath('.//div[@]//a/text()')[0].strip()
for e in f:
boss = '''
%s:||%s:
公司:%s,
工資:%s元/月
=========================================================
''' % (o, t, thr, e)
print(str(boss)
3、發送請求,獲取回應, 頁面回呼,方便下次請求,
def get_page(self, url):
res = requests.get(url=url, headers=self.headers)
html = res.content.decode("utf-8")
return html
4、xpath決議找到對應的父節點,
def page_page(self, html):
parse_html = etree.HTML(html)
one = parse_html.xpath('//div[@]//div[@]/ul/li')
5、for遍歷,定義一個變數food_info保存,獲取到二級頁面對應的菜 名、 原料 、下載鏈接,
for l in one:
o = l.xpath('.//a/span[1]/text()')[0].strip()
t = l.xpath('.//a//span[@]/text()')[0].strip()
f = l.xpath('.//p[@]/text()')
thr = l.xpath('.//div[@]//a/text()')[0].strip()
for e in f:
boss = '''
%s:||%s:
公司:%s,
工資:%s元/月
=========================================================
''' % (o, t, thr, e)
print(str(boss)
6、將結果保存在txt檔案中,如下所示,
f = open('g.txt', 'a', encoding='utf-8') # 以'w'方式打開檔案
f.write(str(boss))
# print(house_dict)
f.write("\n") # 鍵和值分行放,鍵在單數行,值在雙數行
f.close()
7、呼叫方法,實作功能,
html = self.get_page(url)
self.page_page(html)
效果展示
1、點擊綠色小三角運行輸入起始頁,終止頁,
2、運行程式后,結果顯示在控制臺,如下圖所示,
3、保存txt檔案到本地,如下圖所示,
4、雙擊檔案,內容如下圖所示,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/89917.html
標籤:Python
上一篇:學習Python 三
