本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
以下文章來源于欺騙大師 ,作者 魔術師
本次任務背景:
https://www.shixiseng.com
爬取一下實習僧IT互聯網的Python實習資訊
然后看一下網址規律
從上面的網址可以看出,只有page=?這里變化了
接著再點進去,查看相應的詳細資料:https://www.shixiseng.com/intern/inn_1k3vhcwwguaf?pcm=pc_SearchList
然后再查看相應源代碼的屬性
如上圖所示,該欄位的資料看不見,可能它不希望你很簡單的就獲得它網站的這些資料,這些資料對他來說比較重要,所以啟用了反爬技巧
如果直接運行,這些資料是爬取不下來的,如下圖:
反反爬技巧:實際上這是編碼問題,我們只要用一種編碼方式,比如“utf-8”編碼來表現這些資料,然后再用你選的編碼方式來替換相應的資料部分,如下圖:
如上圖,相關資料已經以“utf-8”編碼的方式呈現出來
創建函式hack_number(),用于解碼數字
然后再觀察一下點進去的網址:
撰寫好相關代碼之后,查看運行結果
完整代碼如下:
import requests from bs4 import BeautifulSoup headers = {"user-agent":"Mozilla/5.0"} def hack_number(text): text = text.encode('utf-8') text = text.replace(b'\xef\x82\x9d', b'0') text = text.replace(b'\xee\xa6\x88', b'1') text = text.replace(b'\xee\xa8\xb4', b'2') text = text.replace(b'\xef\x91\xbe', b'3') text = text.replace(b'\xee\x88\x9d', b'4') text = text.replace(b'\xef\x97\x80', b'5') text = text.replace(b'\xee\x85\x9f', b'6') text = text.replace(b'\xee\x98\x92', b'7') text = text.replace(b'\xef\x80\x95', b'8') text = text.replace(b'\xef\x94\x9b', b'9') text = text.decode() return text def detail_page(url): req = requests.get(url,headers=headers) html = req.text soup = BeautifulSoup(html,'lxml') job_name = soup.select('.new_job_name')[0].text.strip() job_money = hack_number(soup.select('.job_money')[0].text.strip()) job_position = soup.select('.job_position')[0].text.strip() job_academic = soup.select('.job_academic')[0].text.strip() job_detail = soup.select('.job_detail')[0].text.strip() job_week = hack_number(soup.select('.job_week')[0].text.strip()) job_time = hack_number(soup.select('.job_time')[0].text.strip()) print(job_name,job_money,job_position,job_academic,job_week,job_time) print(job_detail) #detail_page('https://www.shixiseng.com/intern/inn_1k3vhcwwguaf?pcm=pc_SearchList') #detail_page('https://www.shixiseng.com/intern/inn_uk1lm380lngh?pcm=pc_SearchList') #detail_page('https://www.shixiseng.com/intern/inn_fr1o1nii5knw?pcm=pc_SearchList') for pages in range(1,3): url = f'https://www.shixiseng.com/interns?page={pages}&keyword=Python&type=intern&area=&months=&days=°ree=&official=&enterprise=&salary=-0&publishTime=&sortType=&city=%E8%B4%B5%E9%98%B3&internExtend=' req = requests.get(url,headers=headers) html = req.text soup = BeautifulSoup(html,'lxml') for item in soup.select('a.title ellipsis font'): detail_url = f"https://www.shixiseng.com{item.get('href')}" detail_page(detail_url)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/387.html
標籤:Python
