104學習精靈

資料搜集

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

Line

Facebook

複製連結

取消
關於教室
關注人數 13 人
104人力銀行從職缺中挑選出常見技能所成立的官方教室,提供大家進行共學互動。
學習主持人
持續分享知識,
有機會成為官方教室主持人
教室標籤
關於教室
關注人數 13 人
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 230 2

熱門精選

104學習精靈

產品

04/25 15:52

【限量:免費報名】利用AI自動化行銷|直播講座
講座詳細資訊
時間:04/30(二) 20:00 - 21:00
講者:圭話行銷創辦人 何佳勳 / 業界資深的數位廣告行銷專家
主題:行銷新篇章:AI如何革新檔期活動策略
在這個數位化的時代,AI技術正以驚人的速度改變著我們的行銷方式。檔期促銷活動面對的受眾眾多,難以精準定位目標受眾,進而影響活動效果、每次規劃檔期活動都需要創造吸引人的內容和促銷方式,但長期以來,創意卻逐漸耗盡、想要掌握AI如何革新檔期活動策略的最新動向嗎?
你也在苦思如何創造不同以往、有別競品的檔期活動嗎?104學習精靈與緯育TibaMe,攜手邀請到數位廣告界專家 圭話行銷創辦人何佳勳老師。學員們都稱呼他為小圭老師,不僅熱愛與學員社群互動、對學員有問必答,更善於為客戶的製造許多驚喜及營收,一起期待老師分享如何透過 AI 工具提升30%的檔期活動成效吧~
1 0 4060 0
學習精靈

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

07/10 00:00

5 0

推薦給你

知識貓星球

喵星人

6小時前

Vision Pro銷售慘跌!分析師驚揭3產業慘況
蘋果自詡為「革命性空間運算設備」的 Vision Pro 頭戴式裝置,上市至今已超過一年,卻傳出銷售慘跌的消息。知名蘋果分析師郭明錤指出,Vision Pro在2024年的出貨量預估將下修至40-45台,比原先預估的70-80台減少了30-43%。
【銷售不佳的三大關鍵」】
師郭明錤指出,Vision Pro銷售不佳的原因主要有以下三點:
⓵ 高價難親民
Vision Pro的售價高達3,499美元,相比之下,其他AR和VR頭戴式裝置的價格普遍低於1,000美元。高昂的售價成為Vision Pro的一大銷售障礙。
⓶ 內容匱乏乏人問津
Vision Pro目前可用的內容有限,主要以虛擬會議、3D設計、教育訓練等功能為主。缺乏引人入勝的內容,讓消費者難以找到購買Vision Pro的理由。
⓷ 技術問題添亂
一些使用者反映Vision Pro存在過熱、舒適度不佳等技術問題。這些技術問題降低了Vision Pro的使用者體驗,也影響了其銷售表現。
針對Vision Pro銷售不佳的問題,蘋果採取了以下因應策略:
◉ 降價求生:有傳言指出蘋果正在考慮降低Vision Pro的價格,以提高其競爭力。
◉ 內容加碼搶救:蘋果正在與第三方開發商合作,開發更多Vision Pro的內容。
◉ 技術攻堅解決問題:蘋果正在努力解決Vision Pro的技術問題,以提升使用者體驗。
【Vision Pro的未來命運】
儘管Vision Pro的銷售表現不如預期,但郭明錤仍對其未來發展持樂觀態度。他認為,隨著AR技術的發展,Vision Pro的價格將會越來越便宜,功能也將會越來越強大。未來,AR穿戴式裝置有望成為像智慧型手機一樣普及的電子產品
➤ 立即關注【AI趨勢報-科技愛好者的產地】獲得更多科技新知!
1 0 81 1
你可能感興趣的教室