在市面上眾多的Python網頁爬蟲工具中,如果想要開發大型的網頁爬蟲專案,這時候都會使用Scrapy框架,擁有完整的爬取、儲存及效率等功能。而Scrapy框架如何克服網站的反爬蟲機制呢?
看完這篇文章,你將學會在Scrapy框架中,利用以下三個常見的實用方法,降低反爬蟲網站的偵測風險:
- Scrapy輪流替換User-Agent(使用者代理)
- Scrapy輪流替換Proxy IP(代理服務器IP)
- Scrapy使用無頭瀏覽器(Headless Browser)
一、Scrapy 輪流替換User-Agent(使用者代理)
在Scrapy網頁爬蟲爬取網頁時,網站都會使用User-Agent(使用者代理)來識別所使用的瀏覽器版本資訊,而當Scrapy網頁爬蟲每次爬取都使用相同的User-Agent(使用者代理),就很容易被懷疑是網頁爬蟲而被封鎖。
所以,如果Scrapy網頁爬蟲在發送請求的過程中,隨機使用不同的User-Agent(使用者代理),就可以大幅降低被偵測的風險。
而要達到這樣的功能,就能夠利用以下指令來安裝scrapy-user-agents套件,讓Scrapy網頁爬蟲能夠隨機取用不同的User-Agent(使用者代理):
$ pip install scrapy-user-agents
接著,開啟Scrapy網頁爬蟲專案的settings.py檔案,在DOWNLOAD_MIDDLEWARES的地方,加入以下的設定:
DOWNLOADER_MIDDLEWARES = { 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None, 'scrapy_user_agents.middlewares.RandomUserAgentMiddleware': 400, }
截取部分執行結果
二、Scrapy 輪流替換Proxy IP(代理服務器IP)
同樣,如果Scrapy網頁爬蟲都使用相同的IP發送請求,很容易會被反爬蟲網站發現而封鎖。這時候,就會需要隨機使用不同的Proxy IP(代理服務器IP),降低被偵測的風險。
可以利用以下指令安裝scrapy-rotating-proxies套件,來達成上述的效果:
$ pip install scrapy-rotating-proxies
開啟Scrapy網頁爬蟲傳案的settings.py檔案,加入以下的設定:
ROTATING_PROXY_LIST_PATH = '/path/my_proxies.txt' DOWNLOADER_MIDDLEWARES = { 'rotating_proxies.middlewares.RotatingProxyMiddleware': 610, 'rotating_proxies.middlewares.BanDetectionMiddleware': 620, }
其中,在自訂的Proxy IP檔案(my_proxies.txt)中加入Proxy IP,如下範例:
ROTATING_PROXY_LIST = [ 'proxy_ip_1:8000', 'proxy_ip_2:8031', ... ]
而想要取得免費的Proxy IP可以參考[Python爬蟲教學]有效利用Python網頁爬蟲爬取免費的Proxy IP清單文章,不過也提醒大家在使用免費的Proxy IP開發Python網頁爬蟲時,避免爬取需登入帳號及密碼的網站,以防有資安相關的疑慮。
三、Scrapy使用無頭瀏覽器(Headless Browser)
無頭瀏覽器(Headless Browser)也就是沒有圖形化的使用者介面瀏覽器,能夠模擬使用者在網頁上的操作,降低反爬蟲網站的偵測。
其中,Selenium就是最常被用來啟用無頭瀏覽器(Headless Browser)的套件,而Scrapy結合Selenium套件的實作方式可以參考[Scrapy教學12]在Scrapy框架整合Selenium套件爬取動態網頁的實作指南文章。
四、小結
當然,除了本文所分享的3個Scrapy網頁爬蟲克服反爬蟲網站的方法外,還可以參考[Python爬蟲教學]7個降低Python網頁爬蟲被偵測封鎖的實用方法文章,不外乎就是避免像Python網頁爬蟲機器人一樣有規則模式的爬取資料,才有機會不被反爬蟲網站抓到唷。
希望本文的分享有幫助到您,別忘了在下面訂閱本網站,以及幫我按五下Like(使用Google或Facebook帳號免費註冊),支持我創作教學文章,回饋由LikeCoin基金會出資,完全不會花到錢,感謝大家。
有想要看的教學內容嗎?歡迎利用以下的Google表單讓我知道,將有機會成為教學文章,分享給大家😊
Python學習資源
Python網頁爬蟲推薦課程
Python網頁爬蟲-Scrapy教學
- [Scrapy教學1]快速入門Scrapy框架的5個執行模組及架構
- [Scrapy教學2]實用的Scrapy框架安裝指南,開始你的第一個專案
- [Scrapy教學3]如何有效利用Scrapy框架建立網頁爬蟲看這篇就懂
- [Scrapy教學4]掌握Scrapy框架重要的CSS定位元素方法
- [Scrapy教學5]掌握Scrapy框架重要的XPath定位元素方法
- [Scrapy教學6]解析如何在Scrapy框架存入資料到MySQL教學
- [Scrapy教學7]教你Scrapy框架匯出CSV檔案方法提升資料處理效率
- [Scrapy教學8]詳解Scrapy框架爬取分頁資料的實用技巧
- [Scrapy教學9]一定要懂的Scrapy框架結合Gmail寄送爬取資料附件秘訣
- [Scrapy教學10]不可不知的Scrapy框架爬取下一層網頁資料實作
- [Scrapy教學11]學會使用3個Scrapy網頁爬蟲偵錯技巧提升開發效率
- [Scrapy教學12]在Scrapy框架整合Selenium套件爬取動態網頁的實作指南
Python非同步網頁爬蟲
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYqMPD_mPLEileg1IdrsIYhFSWZkYFKYmEnUqWqiqdiJv2XYnkT23CFcXoTN6HBtGCEUylgVoUIVKm6KPRPM_TjcjsSei4lGE_YmZdrWA6Ulw1fp6-o8Cn-bVwr7_FANFoC4tjTe-ak6w-atFYq-a1pipQbZvQzt4wHRNK7tywcSG0dSCnpJpqoMP5wA/s1600/Python%E7%B6%B2%E9%A0%81%E7%88%AC%E8%9F%B2%E5%85%8D%E8%B2%BB%E7%B7%9A%E4%B8%8A%E5%9F%B9%E8%A8%93.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-fK9Da5M7X1lSpbZVan4Eo-PunVnQv-YHw3EDahTUhZr5FayVLaCPqrW44W3_xwQQO-gAWZEwe_A-SxL_nltT__ArbFOgLYAAIsi3RzETT9GqVsfyfN9PXDs-xGTkxZSqj_W1SCxwD2UcrJLqHZSYIrLB-HIU75vSom4YoqoWFUQz_o4PbnvTQUbE6Bab/w640-h426/2.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg61JC7N1hyphenhyphenPpzb1hNJauunevoWrOsJxk_Upz0ywnLtIAJ2rdd1ZxChyphenhyphenFPq8GHYfywtHv2mTce5NGdwwxWFWYARhA6In0xlOzkwlRb9kM04mwgdy9Un9JgVCoLQnwV25oUcitQy2OY4TeA3gVIs067wR4StGfkldbykOeL3TfPchWfNClWKhL10ZzWaxFtf/w640-h426/3.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh1XFQE0AmkZHSFB0Icq3uY4_FdsIYZ9nUqllOlo9ulRu0ri-LS1OeW2ybKOO2QRg-gyUOUr_3sMLYf7S4Q5ULZpIcXsS1pAkSMPm0OwqpbnLET51WEpQ3EoY5WaEVEWyTixBkRqp2tA7SpePM_MCIY6tnyUvu917rulqbLJTEEPsEho6Q-4Tf74DFdakd/w640-h426/4.png)
留言
張貼留言