104學習精靈

Web browsers

Web browsers
關注
邀請朋友
邀請朋友

Line

Facebook

複製連結

取消
關於教室
關注人數 0 人
104人力銀行從職缺中挑選出常見技能所成立的官方教室,提供大家進行共學互動。
學習主持人
持續分享知識,
有機會成為官方教室主持人
教室標籤
關於教室
關注人數 0 人
104人力銀行從職缺中挑選出常見技能所成立的官方教室,提供大家進行共學互動。
學習主持人
持續分享知識,
有機會成為官方教室主持人
教室標籤
Hi~ 歡迎分享學習資源,有學習問題可匿名向Giver發問!
我要分享
我要提問

Web browsers 學習推薦

全部
影片
文章
Mike Ku

Learn Code With Mike品牌創辦人

2021/12/21

掌握3個降低Scrapy網頁爬蟲被封鎖的技巧
Q: 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,
}
Q: 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',
...
]
Q: Scrapy網頁爬蟲框架如何使用無頭瀏覽器(Headless Browser)?
無頭瀏覽器(Headless Browser)也就是沒有圖形化的使用者介面瀏覽器,能夠模擬使用者在網頁上的操作,降低反爬蟲網站的偵測。
其中,Selenium就是最常被用來啟用無頭瀏覽器(Headless Browser)的套件,而Scrapy結合Selenium套件的實作方式可以參考[Scrapy教學12]在Scrapy框架整合Selenium套件爬取動態網頁的實作指南文章( https://www.learncodewithmike.com/2021/11/scrapy-integrate-with-selenium.html )。
當然,除了本文所分享的3個Scrapy網頁爬蟲克服反爬蟲網站的方法外,還可以參考[Python爬蟲教學]7個降低Python網頁爬蟲被偵測封鎖的實用方法文章( https://www.learncodewithmike.com/2020/09/7-tips-to-avoid-getting-blocked-while-scraping.html ),不外乎就是避免像Python網頁爬蟲機器人一樣有規則模式的爬取資料,才有機會不被反爬蟲網站抓到唷。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2021/12/3-tips-for-scrapy-without-getting-blocked.html
)網站觀看更多精彩內容。
2 0 420 2

熱門精選

104學習精靈

產品

10/30 16:13

雙11精選加碼課程,不要錯過喔!
雙11精選加碼課程,不要錯過喔 !
第一波 11/1 00:00 ~ 11/10 23:59
想要增加職場技能,要保握學習優惠喔!讓你學習更輕鬆!
【 領『 88折送百元LINE點數 』優惠券_結帳記得使用優惠券 】
優惠時間:2024/11/1-2014/11/10
🔵 ChatGPT x Excel | 職場必學商務數據分析術
🔵 從Excel到Power BI數據視覺化
🔵 .NET開發資料庫應用系統全方位-ADO.NET與Entity Framework(.NET Core)攻略
🔵 成為 AI 科學家|資料分析師必備視覺化技能 Power BI
🔵 C# .Net Framework系統基礎實作攻略
🔵 學程式也能很好玩:不背語法寫Java
🔵 快速活用 MySQL,精準設計關聯式資料庫
🔵 全端工程師必修-Python迅速開發網站實戰
🔵 第一次就上手,前端工程新手指南
🔵 成為前端工程師|透過 HTML 與 CSS 認識網頁設計,從 0 到 1 打造實用介面 (上集)
🔵 白帽駭客入門 I 基礎網頁滲透實作
【 領『 85折送百元LINE點數 』優惠券_結帳記得使用優惠券 】
優惠時間:2024/11/1-2014/11/10
🟠 一次搞懂 ChatGPT 工作法 | 5分鐘看懂,立即上手 AI 應用觀念!
🟠 商務簡報技巧
🟠 Python基礎課程:17小時學會寫程式
🟠 訴訟基本觀念十堂課:教你避免法律風險,掌握官司的主導權
🟠 多益全制霸:必考文法全攻略
🟠 英文簡報表達力 | 商務溝通實戰技巧
🟠 多益全制霸:必考字群獨家記憶法
🟠 Offer Get ! 現在開始找份好工作
🟠 如何談升職加薪
🟠 讀懂財報的基礎入門
🟠 產品思維-像產品經理一樣思考
🟠 認識孩子的九大氣質:讓親子關係更緊密的一堂課
【 領『 85折送2百LINE點數 』優惠券_結帳記得使用優惠券 】
優惠時間:2024/11/1-2014/11/10
⚡ 畫出迷人風格 | iPad電繪Procreate插畫課
⚡ 新手的第一堂Procreate動畫課|療癒風格動起來
⚡ 【自我和解的8堂課】用金剛經破除生命誤會,找回快樂的自己
⚡ 居家水電自己來!水電爸爸的水電實務課
⚡ 【化輸入為輸出】九堂課教你輸出高品質內容
⚡ 手沖咖啡學|搞懂原理,成為咖啡職人
【更多課程優惠|查看留言處】
1 13 6506 2
學習精靈

11/09 00:00

1 0
Mike Ku

Learn Code With Mike品牌創辦人

2021/10/19

7個降低Python網頁爬蟲被偵測封鎖的實用方法(下)
本文將延續「7個降低Python網頁爬蟲被偵測封鎖的實用方法(上)」,接續分享降低Python網頁爬蟲被偵測封鎖的方法。
Q:如何設定參照位址(Referer)
請求表頭(Request Headers)中另一個重要的欄位就是參照位址(Referer),用來告訴網站這個請求(Request)是來自於哪一個網站,如下範例:
headers = {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-TW,zh;q=0.9",
"Host": "example.com",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "none",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36",
"Referer": "https://www.google.com/" #參照位址
}
response = requests.get(url="https://example.com", headers=headers)
這時候可以使用像SEMRush( https://www.semrush.com/ )的工具,來顯示目標網頁的反向連結,也就是能夠到達目標網頁的其它連結,就可以在Python網頁爬蟲的每一次請求(Request)前,將不同的反向連結設定到參照位址(Referrer)中,讓每一次的來源網站都不相同,降低被網頁偵測到的風險。
Q:如何設定隨機的延遲時間?
在每一次請求(Request)之間,最好設定隨機的延遲時間(Delay),這樣除了防止每一次的請求(Request)間隔時間不同之外,也沒有固定的請求模式,可以參考以下的範例:
delay_choices = [8, 5, 10, 6, 20, 11]
delay = random.choice(delay_choices)
time.sleep(delay) #延遲
Q:使用無頭瀏覽器(Headless Browser)的方法?
無頭瀏覽器(Headless Browser)和一般瀏覽器不一樣的地方是,它沒有圖形化的使用者介面,通常會使用指令的方式來執行,知名的Selenium套件就可以讓開發人員利用程式碼,自動化控制瀏覽器的執行,模擬人類的操作,降低被偵測到的風險,使用的方式可以參考[Python爬蟲教學]整合Python Selenium及BeautifulSoup實現動態網頁爬蟲文章( https://www.learncodewithmike.com/2020/05/python-selenium-scraper.html )。
Q:如何避免掉入網頁蜜罐陷阱(Honeypot Traps)
網頁蜜罐陷阱(Honeypot Traps)就是許多網頁會在HTML原始碼中埋入只有網頁爬蟲會讀取到的隱藏連結或屬性,如果在開發Python網頁爬蟲沒有注意或避開時,很容易就會被偵測到而被封鎖,舉例來說,有個隱藏的連結帶有「display:none」或「visibility: hidden」的CSS屬性等,這是正常的使用者看不到,而網頁爬蟲所能讀取到的。
要避免掉入網頁蜜罐陷阱(Honeypot Traps),除了要注意網頁的HTML原始碼之外,另一個方法就是在開發Python網頁爬蟲時,可以參考該網頁的網站地圖(Sitemap),其中會列出公開給使用者存取的網頁網址,在開發的過程中,就盡量挑選裡面的公開網址來進行爬取。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/09/7-tips-to-avoid-getting-blocked-while-scraping.html )網站觀看更多精彩內容
2 0 307 1
學習精靈

04/18 00:00

1 0

推薦給你

知識貓星球

喵星人

22小時前

辦公用品英文合集:釘書機、長尾夾、便利貼、迴紋針等辦公文書用具的英文原來是這個!
常見辦公室文具用品的英文該怎麼說呢?一篇教你釘書機、長尾夾、便利貼、迴紋針的英文怎麼說,來學習各種工具的英文吧!
1. 書寫工具
• Ballpoint Pen - 原子筆
• Mechanical Pencil - 自動鉛筆
• Highlighter - 螢光筆
• Eraser - 橡皮擦
• Correction Tape - 修正帶
2. 夾子和裝訂文件工具
• Stapler - 釘書機
• Staples - 釘書針
• Paperclip - 迴紋針
• Binder Clip - 長尾夾
• Hole Punch - 打孔機
3. 黏貼工具
• Push Pin - 圖釘
• Tape Dispenser - 膠帶座
• Glue Stick - 口紅膠
• Rubber Bands - 橡皮筋
4. 量測工具
• Ruler - 尺
• Calculator - 計算機
5. 文件夾等辦公用品
• Folder - 資料夾
• Post-it Notes - 便利貼
• Clipboard - 寫字夾板
記得關注我們的共學教室,不要錯過任何文章喔!
0 1 474 1
你可能感興趣的教室