分享一次實(shí)用的爬蟲經(jīng)驗(yàn)
回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書
????大家好,我是Python進(jìn)階者。
前言
????前幾天鉑金群有個(gè)叫【艾米】的粉絲在問(wèn)了一道關(guān)于Python網(wǎng)絡(luò)爬蟲的問(wèn)題,如下圖所示。

????不得不說(shuō)這個(gè)粉絲的提問(wèn)很詳細(xì),也十分的用心,給他點(diǎn)贊,如果大家日后提問(wèn)都可以這樣的話,想必可以節(jié)約很多溝通時(shí)間成本。
????其實(shí)他抓取的網(wǎng)站是愛(ài)企查,類似企查查那種。

??
一、思路
????一開始我以為很簡(jiǎn)單,我照著他給的網(wǎng)站,然后一頓抓包操作,到頭來(lái)竟然沒(méi)有找到響應(yīng)數(shù)據(jù),不論是在ALL還是XHR里邊都沒(méi)有找到任何符合要求的數(shù)據(jù),真是納悶。講到這里,【杯酒】大佬一開始也放大招,嚇得我不敢說(shuō)話。

????其實(shí)是想復(fù)雜了,一會(huì)兒你就知道了。

????懷著一顆學(xué)習(xí)的心,我看了杯酒的代碼,發(fā)現(xiàn)他構(gòu)造的URL中有下圖這個(gè):

????然后我再去網(wǎng)頁(yè)中去找這個(gè)URL,可是這個(gè)URL在原網(wǎng)頁(yè)中根本就找不到???這就離譜了,總不能空穴來(lái)風(fēng)吧,事出必有因!
二、分析
??? 原來(lái)這里有個(gè)小技巧,有圖有真相。

????之后根據(jù)抓包情況,就可以看到數(shù)據(jù)了。

????在里邊可以看到數(shù)據(jù):

????這里【杯酒】大佬查詢的關(guān)鍵詞是:數(shù)據(jù),所以得到了好幾頁(yè)數(shù)據(jù),而我和【艾米】都是直接查的:上海手術(shù)器械廠,這個(gè)只有一頁(yè),不太好觀察規(guī)律,所以一直卡住了。

????之后將得到的代碼中的URL的關(guān)鍵詞,改為:上海手術(shù)器械廠,就可以順利的得到數(shù)據(jù),是不是很神奇呢?
三、代碼
??? 下面就奉上本次爬蟲的代碼,歡迎大家積極嘗試。
# -*- coding: utf-8 -*-import requestsimport user_agentfrom urllib import parsedef search(key_word):for page_num in range(1, 2):url = f'https://aiqicha.baidu.com/s/advanceFilterAjax?q={parse.quote(key_word)}&t=&p={str(page_num)}&s=10&o=0&f=%7B%7D'headers = {'User-Agent': user_agent.generate_user_agent(),'Referer': 'https://aiqicha.baidu.com/s?q=%E6%95%B0%E6%8D%AE&t=0',}print(url)response = requests.get(url=url, headers=headers)print(requests)print(response.json())# breakif __name__ == '__main__':????search('上海手術(shù)器械廠')
????只需要將關(guān)鍵詞換成你自己想要搜索的就可以了。
????下圖是運(yùn)行的結(jié)果:


????下圖是原網(wǎng)頁(yè)的截圖,可以看到數(shù)據(jù)可以對(duì)的上:

四、總結(jié)
??? 我是Python進(jìn)階者。本文基于粉絲提問(wèn),針對(duì)一次有趣的爬蟲經(jīng)歷,分享一個(gè)實(shí)用的爬蟲經(jīng)驗(yàn)給大家。下次再遇到類似這種首頁(yè)無(wú)法抓取的網(wǎng)頁(yè),或者看不到包的網(wǎng)頁(yè),不妨試試看文中的“以退為進(jìn),投機(jī)取巧”方法,說(shuō)不定有妙用噢!
????最后感謝【艾米】提問(wèn),感謝【杯酒】大佬解惑,感謝小編精心整理,也感謝【磐奚鳥】積極嘗試。
????針對(duì)本文中的網(wǎng)頁(yè),除了文章這種“投機(jī)取巧”方法外,用selenium抓取也是可行的,速度慢一些,但是可以滿足要求。小編相信肯定還有其他的方法的,也歡迎大家在評(píng)論區(qū)諫言。

????小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過(guò)程中,有遇到任何問(wèn)題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。
-------------------?End?-------------------
往期精彩文章推薦:

歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群】
萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行
/今日留言主題/
隨便說(shuō)一兩句吧~~
