国产无码免费,人妻口爆,国产V在线,99中文精品7,国产成人无码AA精品一,制度丝袜诱惑av,久久99免费麻辣视频,蜜臀久久99精品久久久久久酒店
        訂閱
        糾錯
        加入自媒體

        5個用python編寫非阻塞web爬蟲的方法

        2019-01-29 14:54
        python猿
        關注

        前言

        大家在讀爬蟲系列的帖子時常常問我怎樣寫出不阻塞的爬蟲,這很難,但可行。通過實現一些小策略可以讓你的網頁爬蟲活得更久。那么今天我就將和大家討論這方面的話題。

        用戶代理

        你需要關心的第一件事是設置用戶代理。 用戶代理是用戶訪問的工具,并告知服務器用戶正在使用哪個網絡瀏覽器訪問網站。 如果未設置用戶代理,許多網站不會讓你查看內容。 如果你正在使用rquests庫,可以執行如下操作:

        你可以通過在 Google 搜索欄中輸入 User-Agent 來獲取用戶代理的信息,并且它會返回你當前的用戶代理信息。

        現在,你已經有了一個用戶代理,但如何去使用它? 那么,最好的方法是從文本文件、數據庫、Python 的列表中選擇一個隨機的 User-Agent 。 Udger 分享了大量的 UA w.r.t 瀏覽器。 比如,對于 Chrome 而言,它看起來像這樣,對 Firefox 來說,又像這樣。 現在讓我們來創建一個函數,它將返回一個隨機 UA ,你可以在請求中使用:

        ua_file.txt 包含一個來自我上面共享的網站的每行 UA 。 函數 get_random_ua 將始終從該文件中返回唯一的 UA 。 你現在可以調用如下函數:

        Referrers

        接下來你需要設置的是引用。 一般的規則是,如果它是一個列表頁面或主頁,那么你可以設置該國家的 Google 主頁網址。

        如果你要抓取各個產品頁面,可以在引用中設置相關類別的網址,或者可以找到要抓取的域的反向鏈接。 我通常使用 SEMRush 來這么做。

        如果你點擊查看放大的圖像,你可以看到一些鏈接指向我所需的類別。一旦你收集所有這些真實的反向鏈接,你可以通過復制邏輯 insideget_random_ua()返回隨機引用,并將它們用作引用。 如下所示:

        代理IP

        我不得不強調這一點。如果認真研究,那么你必須使用多個代理 IP 來避免阻塞。 大多數網站會根據你的服務器或主機提供商的靜態 IP 來阻止抓取工具。 這些網站使用智能的工具來確定某個 IP 或 IP 池的方式,并簡單地阻止它們。 這也是為什么建議購買幾個 IP 地址,50-100個至少要避免阻塞。有許多可用的服務,但我對 Shaders(現在稱為 OxyLabs )感到滿意。 它們雖然很貴,但服務質量很好。 確保你在訂購多個 IP 時,要求提供隨機 IP 或至少不遵循 1.2.3.4 到 1.2.3.100 等特定模式。站點管理員將很簡單的設置 IP 地址不全部為 1.2.3.* 。 就這么簡單。

        如果你正在使用請求,你可以像下面這樣使用它:

        如果你在 Selenium 使用代理 IP ,那么這將有點棘手。

        不用說,get_random_proxy() 是返回一個唯一且隨機代理的方法,就像上面獲得唯一且隨機的 UA 和 Referer 一樣。

        你可以思考一個這樣的系統,在系統中你可以設置一個 IP 每天或每小時訪問網站頻率,如果它超過了,那么它將被放入一個籠子里直到第二天。 我所在的公司設計了一個這樣的系統,不僅設置了 IP 訪問頻率,還記錄了哪個 IP 被阻止。 最后,我只是使用代理服務提供者僅替換這些代理。 由于這超出了本文的范圍,所以我不會詳細介紹它。

        Request Heaters

        到目前為止,事情你都已經做得很好,但是仍然有些狡猾的網站要求你做更多的事情。當你訪問頁面的時候他們會查找特定的請求響應頭信息,如果特定的頭信息沒有被發現,他們會阻止內容顯示或者展示一個虛假的內容。模擬一個你想訪問的網站的請求是非常簡單的。例如,比如你正準備訪問一個 Craigslist URL ,并且想知道哪個頭部信息是需要的。進入 Chrome/Firefox 瀏覽器,檢查正在訪問的頁面,你應該會看到下面這些內容:

        如果你點擊了圖標并查看,你能找到除了 referer 和 user-agent 之外的大量信息。你能一次性全都實現也可以一個個的實現并測試。無論訪問哪個網站,我總是去設置這些信息。請確保你不只是復制粘貼這些信息去訪問所有網站,因為這些信息通常會因網站不同而改變。

        延遲

        在請求之間放置一些延遲總是很好的。我使用 numpy.random.choice() 來實現這一目標,該函數將在我想延遲的服務中傳遞隨機數列表:

        如果你還沒有使用過 numpy 庫,你也可以使用 random choice 來達到同樣的目的。

        如果你真的很急,那么你可以并行執行 URL ,我之前在此文中解釋過了。

        結語

        Web 爬蟲被阻塞的不確定性永遠不會變為零,但你總是可以采取一些措施來規避它。我討論了一些你應該以某種或其他方式在 web 爬蟲中實現的策略。

        如果你知道其他策略或技巧,請通過分享評論讓我獲知。一如既往地,期待你的反饋。

        聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

        發表評論

        0條評論,0人參與

        請輸入評論內容...

        請輸入評論/評論長度6~500個字

        您提交的評論過于頻繁,請輸入驗證碼繼續

        暫無評論

        暫無評論

          人工智能 獵頭職位 更多
          掃碼關注公眾號
          OFweek人工智能網
          獲取更多精彩內容
          文章糾錯
          x
          *文字標題:
          *糾錯內容:
          聯系郵箱:
          *驗 證 碼:

          粵公網安備 44030502002758號

          主站蜘蛛池模板: 制服.丝袜.亚洲.中文.综合| 91精品国产综合久久久蜜臀678| 婷婷亚洲五月花视频| 国模无码在线| 荣昌县| 热国产综合| http://国产熟女.com| 撸色网| AV一区二区三区| 无毛片| 成人AV毛片| 日韩无码系列| 莎车县| 欧美福利导航| 91视频免费| 亚洲色无码| 无码AⅤ一区二区三区| 91在线视频播放| 日韩人妻精品中文字幕专区不卡| 潢川县| 无码人妻一区二区三区线花季传件| 靖西县| 色色色资源| 少妇无码| A片AV| 国产a∨视频免费观看| 洮南市| 亚洲欧美v| 国产精品99精品无码视亚| 松下纱荣子被c到高潮下不了床| 久久国产AV| 婷婷色av| 中文字幕日本有码| 国产真实乱露脸对白| 男人天堂手机在线| 淫射网| 波多野在线影院| 亚洲成年网站| 91九色首页| 91免费在线| jizz麻豆|