104學習精靈

Framework

Framework
關注
邀請朋友
邀請朋友

Line

Facebook

複製連結

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

Framework 學習推薦

全部
影片
文章
Mike Ku

Learn Code With Mike品牌創辦人

2022/01/15

掌握Scrapy框架重要的CSS定位元素方法(下)
Q: Scrapy如何利用CSS方法取得子元素值?
在實務上利用Scrapy框架開發Python網頁爬蟲時,並不是每次想要爬取的網頁元素(Element)都會有CSS樣式類別可以定位,這時候,就會需要透過上層的父元素往下定位子元素。
假設INSIDE硬塞的網路趨勢觀察網站-AI新聞( https://www.inside.com.tw/tag/ai )的文章標題<a>標籤沒有「js-auto_break_title」CSS樣式類別,而想要爬取<a>標籤的文字內容,該如何達成呢?
這時候,就會需要在Scrapy框架中利用CSS樣式類別先定位到<h3>標籤,接著,再取得其下的子元素<a>標籤,如下範例:
import scrapy
class InsideSpider(scrapy.Spider):
name = 'inside'
allowed_domains = ['www.inside.com.tw']
def parse(self, response):
titles = response.css("h3.post_title a::text").getall()
for title in titles:
print(title)
在範例中,利用「post_title」CSS樣式類別定位到<h3>標籤後,接著一個空白,加上<a>標籤,意思就是取得<h3>標籤下的所有<a>標籤,由於要取得其中的文字,所以加上「::text」。
Q: Scrapy如何利用CSS方法取得元素屬性值?
此外,在開發Python網頁爬蟲時,也有機會爬取元素的屬性值(Attribute),舉例來說,最常見的就是<a>標籤的href屬性值(Attribute),也就是文章的連結網址,這時候只需要將「::text」關鍵字,修改為「::attr(屬性名稱)」即可,如下範例:
import scrapy
class InsideSpider(scrapy.Spider):
name = 'inside'
allowed_domains = ['www.inside.com.tw']
def parse(self, response):
urls = response.css("a.js-auto_break_title::attr(href)").getall()
for url in urls:
print(url)
本文與掌握Scrapy框架重要的CSS定位元素方法(上)搭配實際的網站,示範Scrapy框架利用css()方法(Method)來定位網頁元素的基本用法,重點摘要如下:
1.取得單一元素值呼叫get()方法(Method)
2.取得多個元素值呼叫getall()方法(Method)
3.取得文字內容,加上「::text」關鍵字
4.取得屬性值則加上「::attr(屬性名稱)」關鍵字
希望對於想要學習Scrapy框架的朋友有所幫助。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2021/01/scrapy-css-selectors.html
)網站觀看更多精彩內容。
2 0 339 1

熱門精選

104學習精靈

產品

06/26 13:22

【PPA開幕慶】活動期間首購單筆滿千以上送100元Line Points點數
活動期間:2024/7/9 11:00- 2024/8/5 23:59
活動說明:活動期間首次於104課程中心付費購買「PPA (PressPlay Academy) 上架課程」,單筆滿$1,000以上 ( 若有使用任何折扣碼優惠,結帳金額於扣除優惠後須超過$1,000以上,且不累計贈送。) 即可獲贈100元Line Points點數回饋。
活動注意事項:
1. 獲贈資格須符合下列說明:
(A) 首購意指:載本活動之前未曾在104課程中心購買「PPA (PressPlay Academy) 上架課程」,於活動期間首次完成消費購買「PPA (PressPlay Academy) 上架課程」。
(B) 購買者必須於104課程中心系統完成付費紀錄。( 特別提醒: 購買者於PPA (PressPlay Academy) 官網線上消費不包含在此次活動資格 )
(C) 訂單成立且完成付款時間皆須於2024年8月5日23:59前,並於7天內完成課程兌換,始符合獲贈點數回饋的資格;最後獲贈者將公告於本活動網站,中間姓名會隱藏。
(D) 單帳號僅有乙次贈送資格,符合上述資格者,因點數作業時間,您的回饋點數最晚將於2024/9/30前寄送至您購買時填寫的e-mail電子郵件信箱。
2. 本次贈送的100元Line Points點數,點數發送後請於規範時間內完成兌換,點數兌換後於180天內須使用完畢,逾期失效。
3. 104課程中心保有最終修改、變更、活動解釋及取消本活動之權利。
4. 104課程中心。購買課程相關Q&A:可參考下連結頁面的「購買課程」( https://nabi.104.com.tw/qna )
5. 如您有任何問題,歡迎來信nabiservice@104.com.tw
0 0 21989 3
學習精靈

06/06 00:00

79 1
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 285 2
學習精靈

06/17 00:00

7 0

推薦給你

知識貓星球

喵星人

10小時前

投放Google關鍵字廣告的五大優勢!
Google關鍵字廣告可以幫助企業提高銷售、增加品牌曝光和精確觸達目標客戶。投放Google關鍵字廣告(Google Ads)的五大理由如下:
1. 高效目標客戶:Google關鍵字廣告可以讓你精確鎖定正在搜索與你的產品或服務相關的潛在客戶。這意味著你的廣告會出現在那些已經對你的產品有興趣的人的面前,從而提高轉化率。
2. 靈活的預算控制:你可以根據自己的預算靈活設置每日和每次點擊的費用。無論是小企業還是大型公司,都可以根據需要調整廣告支出,以確保不超出預算。
3. 即時效果追踪與優化:Google Ads提供詳細的報告和分析工具,讓你能夠即時追踪廣告的效果。這些數據可以幫助你了解哪些關鍵字和廣告文案最有效,並進行及時的優化,以提高投資回報率。
4. 增加品牌知名度:即使用戶不點擊你的廣告,只要他們在搜索結果頁面上看到你的品牌名稱和信息,就能增加品牌的曝光度和知名度,這對於長期的品牌建設非常有利。
5. 覆蓋廣泛且多樣化的受眾:Google擁有全球最大的搜索引擎,能夠覆蓋世界各地的廣大受眾。無論你是本地企業還是國際公司,都可以通過Google Ads將你的產品或服務展示給不同地域和語言的用戶。
0 0 130 0
你可能感興趣的教室