<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          爬蟲必備工具,掌握它就解決了一半的問題

          共 2297字,需瀏覽 5分鐘

           ·

          2022-04-28 17:24




          ↑ 關(guān)注 + 星標(biāo) ,每天學(xué)Python新技能

          后臺回復(fù)【大禮包】送你Python自學(xué)大禮包


          網(wǎng)上爬蟲的教程實(shí)在太多了,去知乎上搜一下,估計能找到不下一百篇。大家樂此不疲地從互聯(lián)網(wǎng)上抓取著一個又一個網(wǎng)站。但只要對方網(wǎng)站一更新,很可能文章里的方法就不再有效了。

          每個網(wǎng)站抓取的代碼各不相同,不過背后的原理是相通的。對于絕大部分網(wǎng)站來說,抓取的套路就那么一些。今天這篇文章不談任何具體網(wǎng)站的抓取,只來說一個共性的東西:

          如何通過 Chrome 開發(fā)者工具尋找一個網(wǎng)站上特定數(shù)據(jù)的抓取方式。

          我這里演示的是 Mac 上的英文版 Chrome,Windows 中文版的使用方法是一樣的。

           查看網(wǎng)頁源代碼

          在網(wǎng)頁上右擊鼠標(biāo),選擇“查看網(wǎng)頁源代碼”(View Page Source),就會在新標(biāo)簽頁中顯示這個 URL 對應(yīng)的 HTML 代碼文本。


          此功能并不算是“開發(fā)者工具”一部分,但也很常用。這個內(nèi)容和你直接通過代碼向此 URL 發(fā)送 GET 請求得到的結(jié)果是一樣的(不考慮權(quán)限問題)。如果在這個源代碼頁面上可以搜索到你要內(nèi)容,則可以按照其規(guī)則,通過正則、bs4、xpath 等方式對文本中的數(shù)據(jù)進(jìn)行提取。


          不過,對于很多異步加載數(shù)據(jù)的網(wǎng)站,從這個頁面上并不能搜到你要的東西。或者因?yàn)闄?quán)限、驗(yàn)證等限制,代碼中獲取到的結(jié)果和頁面顯示不一致。這些情況我們就需要更強(qiáng)大的開發(fā)者工具來幫忙了。


          Elements

          在網(wǎng)頁上右擊鼠標(biāo),選擇“審查元素”(Inspect),可進(jìn)入 Chrome 開發(fā)者工具的元素選擇器。在工具中是 Elements 標(biāo)簽頁。


          Elements 有幾個功能:
          • 選擇元素:通過鼠標(biāo)去選擇頁面上某個元素,并定位其在代碼中的位置。
          • 模擬器:模擬不同設(shè)備的顯示效果,且可以模擬帶寬。
          • 代碼區(qū):顯示頁面代碼,以及選中元素對應(yīng)的路徑
          • 樣式區(qū):顯示選中元素所受的 CSS 樣式影響


          從 Elements 工具里定位數(shù)據(jù)比我們前面直接在源代碼中搜索要方便,因?yàn)槟憧梢郧宄吹剿幍脑亟Y(jié)構(gòu)。但這邊特別提醒的是:

          Elements 里看到的代碼不等于請求網(wǎng)址拿到的返回值

          它是網(wǎng)頁經(jīng)過瀏覽器渲染后最終呈現(xiàn)出的效果,包含了異步請求數(shù)據(jù),以及瀏覽器自身對于代碼的優(yōu)化改動。所以,你并不能完全按照 Elements 里顯示的結(jié)構(gòu)來獲取元素,那樣的話很可能得不到正確的結(jié)果。


          Network

          在開發(fā)者工具里選擇 Network 標(biāo)簽頁就進(jìn)入了網(wǎng)絡(luò)監(jiān)控功能,也就是常說的“抓包”。


          這是爬蟲所用到的最重要功能。它主要解決兩個問題:

          1. 抓什么
          2. 怎么抓

          抓什么,是指對于那些通過異步請求獲取到的數(shù)據(jù),如何找到其來源。

          打開 Network 頁面,開啟記錄,然后刷新頁面,就可以看到發(fā)出的所有請求,包括數(shù)據(jù)、JS、CSS、圖片、文檔等等都會顯示其中。從請求列表中可以尋找你的目標(biāo)。

          一個個去找會很痛苦。分享幾個小技巧:

          • 點(diǎn)擊“搜索”功能,直接對內(nèi)容進(jìn)行查找。
          • 選中 Preseve log,這樣頁面刷新和跳轉(zhuǎn)之后,列表不會清空。
          • Filter 欄可以按類型和關(guān)鍵字篩選請求。

          找到包含數(shù)據(jù)的請求之后,接下來就是用程序獲取數(shù)據(jù)。這時就是第二個問題:怎么抓

          并不是所有 URL 都能直接通過 GET 獲取(相當(dāng)于在瀏覽器里打開地址),通常還要考慮這幾樣?xùn)|西:

          1. 請求方法,是 GET 還是 POST。
          2. 請求附帶的參數(shù)數(shù)據(jù)。GET 和 POST 傳遞參數(shù)的方法不一樣。
          3. Headers 信息。常用的包括 user-agent、host、referer、cookie 等。其中 cookie 是用來識別請求者身份的關(guān)鍵信息,對于需要登錄的網(wǎng)站,這個值少不了。而另外幾項(xiàng),也經(jīng)常會被網(wǎng)站用來識別請求的合法性。同樣的請求,瀏覽器里可以,程序里不行,多半就是 Headers 信息不正確。你可以從 Chrome 上把這些信息照搬到程序里,以此繞過對方的限制。

          點(diǎn)擊列表中的一個具體請求,上述信息都可以找到。


          找對請求,設(shè)對方法,傳對參數(shù)以及 Headers 信息,大部分的網(wǎng)站上的信息都可以搞定了。

          Network 還有個功能:右鍵點(diǎn)擊列表,選擇“Save as HAR with content”,保存到文件。這個文件包含了列表中所有請求的各項(xiàng)參數(shù)及返回值信息,以便你查找分析。(實(shí)際操作中,我發(fā)現(xiàn)經(jīng)常有直接搜索無效的情況,只能保存到文件后搜索)


          除了 Elements 和 Network,開發(fā)者工具中還有一些功能,比如:

          Sources,查看資源列表和調(diào)試 JS。
          Console,顯示頁面的報錯和輸出,并且可以執(zhí)行 JS 代碼。很多網(wǎng)站會在這里放上招聘的彩蛋(自己多找些知名網(wǎng)站試試)。


          但這些功能和爬蟲關(guān)系不大。如果你開發(fā)網(wǎng)站和優(yōu)化網(wǎng)站速度,就需要和其他功能打交道。這里就不多說了。

          總結(jié)一下,其實(shí)你就記住這幾點(diǎn):

          1. 查看源代碼”里能看到的數(shù)據(jù),可以直接通過程序請求當(dāng)前 URL 獲取。
          2. Elements 里的 HTML 代碼等于請求返回值,只能作為輔助。
          3. Network 里用內(nèi)容關(guān)鍵字搜索,或保存成 HAR 文件后搜索,找到包含數(shù)據(jù)的實(shí)際請求
          4. 查看請求的具體信息,包括方法、headers、參數(shù),復(fù)制到程序里使用。

          理解了這幾步,大部分網(wǎng)上的數(shù)據(jù)都可以拿到,說“解決一半的問題”可不是標(biāo)題黨。

          當(dāng)然咯,說起來輕松幾點(diǎn),想熟練掌握,還是有很多細(xì)節(jié)要考慮,需要不斷練習(xí)。但帶著這幾點(diǎn)再去看各種爬蟲案例,思路會更清晰。



          1. 用Python制作可視化GUI界面,順便實(shí)現(xiàn)自動分類整理文件!

          2. 安裝這5個插件后,PyCharm好用到起飛!


          瀏覽 12
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  精品aaa| 黑人3 P操B视频 | 婬荡的寡妇一区二区三区 | 黄色五月天婷婷 | 色黄视频网站 |