104學習精靈

資料搜集

資料搜集
關注
邀請朋友
邀請朋友

Line

Facebook

複製連結

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

資料搜集 學習推薦

全部
影片
文章
Mike Ku

Learn Code With Mike品牌創辦人

2021/12/21

在Scrapy框架整合Selenium套件爬取動態網頁的實作
本文以Accupass網站的精選活動為例,來分享Scrapy框架整合Selenium套件,開發Python網頁爬蟲的流程。
Q: 如何建立Scrapy網頁爬蟲?
首先,利用以下指令安裝Scrapy框架:
$ pip install scrapy
接著,新增一個資料夾,並且使用命令提示字元切換到該資料夾的目錄下,建立Scrapy專案,如下:
$ scrapy startproject accupass_scraper .
有了專案後,就能夠利用以下指令建立Scrapy網頁爬蟲:
$ scrapy genspider accupass accupass.com
Q:如何安裝scrapy-selenium套件?
而Scrapy框架想要使用Selenium套件來發送請求與接收回應,就需要一個Middleware來使用Selenium套件。
其中的Middleware,也就是在Scrapy發送請求前,以及將回應結果傳給Scrapy網頁爬蟲前,能夠在Middleware中來進行前處理。
所以,Scrapy框架想要使用Selenium套件來發送請求與接收回應結果,就需要定義Middleware,當然,已經有大大寫好了scrapy-selenium Middleware可以使用,安裝方式如下指令:
$ pip install scapy-selenium
接下來,前往下載Selenium的瀏覽器驅動,並且放置於Scrapy專案資料夾中。開啟settings.py檔案,加入scrapy-selenium Middleware的相關設定,如下範例:
DOWNLOADER_MIDDLEWARES = {
'scrapy_selenium.SeleniumMiddleware': 800
}
SELENIUM_DRIVER_NAME = 'chrome'
SELENIUM_DRIVER_EXECUTABLE_PATH = 'chromedriver.exe'
SELENIUM_DRIVER_ARGUMENTS = ['-headless']
Q:如何Scrapy整合Selenium爬取動態網頁?
開啟Scrapy專案的accupass.py檔案,引用scrapy-selenium的SeleniumRequest模組,如下範例:
import scrapy
from scrapy_selenium import SeleniumRequest
而想要讓Scrapy框架使用Selenium套件發送請求,就可以新增start_requests()方法,如下範例:
class AccupassSpider(scrapy.Spider):
name = 'accupass'
allowed_domains = ['accupass.com']
start_urls = ['http://accupass.com/']
def start_requests(self):
yield SeleniumRequest(url='https://www.accupass.com/?area=north', callback=self.parse)
以上的callback參數就是收到網頁的回應結果之後,所要執行的方法,也就是爬取網頁上的資料,如下範例:
class AccupassSpider(scrapy.Spider):
name = 'accupass'
allowed_domains = ['accupass.com']
start_urls = ['http://accupass.com/']
def start_requests(self):
yield SeleniumRequest(url='https://www.accupass.com/?area=north', callback=self.parse)
def parse(self, response):
titles = response.css("p.style-f13be39c-event-name::text").getall()
for title in titles:
print(title)
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2021/11/scrapy-integrate-with-selenium.html
)網站觀看更多精彩內容。
3 0 215 2

熱門精選

104學習精靈

產品

01/30 17:45

一生受用!談薪水技巧,學起來一起加薪去!
要怎麼談到更高的薪水?獨家揭密談薪策略,讓獵才顧問偷偷告訴你!💰 去看看→ https://senior.104.com.tw/c/65a789d901eb03060b1dfd69?utm_source=104&utm_medium=nabi_post
► 3大特色 x 市場獨家 ◄
1. 頂尖獵才,談薪策略分享
2. 解密常見談薪,5大問題解法
3. 專屬課後討論區
► 適合對象 ◄
1. 初入職場的新鮮人
2. 準備轉職的 求職者
3. 爭取加薪的工作者
掌握談薪策略,要你薪資再創高峰!
6 1 49761 10
學習精靈

01/23 00:00

33 2
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 322 2
學習精靈

07/10 00:00

5 0

推薦給你

緯育TibaMe

03/11 10:13

【免費報名】3/18與你分享 跨域轉職正夯,揭密成功轉職心法
想跟著金牌就業培訓講師邁向你的理想職涯嗎?🚀
搶先報名留下轉職煩惱線上就有機會優先解答👉 https://bit.ly/48Tsxh8
年後往往掀起一波轉職潮,企業更釋出大量缺…
或許你不知道根據人力銀行統計「跨領域」轉職趨勢正逐年增高!
追逐理想職涯路上你並不孤單🤗
你缺的只是勇敢跨出的那一步~
▋ 跟著直播離成功更進一步
你將獲得…
🚩 年後全新局面的因應指南
🚩 跨領域轉職是「歸零」還是「未嘗試的成功機會點」?
🚩 7大領域的IT人才進入攻略
🚩 5個月內從0 → 實戰力的核心關鍵
🚩揭密跨域轉職者求職的突破點
本次邀請同時俱 #業界實戰、 #企業主管 、 #轉職就業培訓教學 三大經歷的雙講師線上與你分享一陸以來他們如何幫助眾多學員一個個推向理想職涯的!
▋ 本場講者
李偉銘 老師
軟體產業5年開發、管理、規劃資歷。
曾任資深軟體工程師、技術副理,經手許多金控及公家機關等開發專案。
現任 緯育TibaMe Java雲端服務開發技術養成班、前端工程師專業技術養成班等5大就業養成班授課講師
Reds老師
軟體產業5年開發、管理、規劃資歷。
曾任資深軟體工程師,軟體專案主管。擁有半導體、政府、中小型企業軟體專案開發與維護經驗,包含台灣惠普(HP)、民航局、神腦…等。
現任 微軟C#全端開發工程師養成班 講師
▋ 直播詳細資訊
主題:【揭密年後轉職薪高度TIPS】 5個月內從零基礎到成功跨域就業
時間:3/18(一) 20:00 - 21:00
直播連結:報名後活動當日mail提供
免費報名: https://bit.ly/48Tsxh8
0 0 9046 4
你可能感興趣的教室