104學習精靈

XPath

XPath
關注
邀請朋友
邀請朋友

Line

Facebook

複製連結

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

XPath 學習推薦

全部
影片
文章
Mike Ku

Learn Code With Mike品牌創辦人

2022/01/21

不可不知的Scrapy框架爬取下一層網頁資料實作
本文以INSIDE硬塞的網路趨勢觀察網站( https://www.inside.com.tw/ )首頁的熱門文章為例,來和大家分享如何在Scrapy框架中爬取下一層的網頁內容。
Q: Scrapy網頁爬蟲爬取下一層網頁內容
建立Scrapy網頁爬蟲檔案(hot_news.py),在parse()方法(Method)的地方,透過Scrapy框架的xpath()方法(Method),來爬取INSIDE硬塞的網路趨勢觀察網站的所有熱門文章下一層網頁網址,如下範例:
import scrapy
class HotNewsSpider(scrapy.Spider):
name = 'hot_news'
allowed_domains = ['www.inside.com.tw']
def parse(self, response):
post_urls = response.xpath(
"//a[@class='hero_menu_link']/@href").getall()
詳細的Scrapy xpath定位元素方法教學可以參考[Scrapy教學5]掌握Scrapy框架重要的XPath定位元素方法文章( https://www.learncodewithmike.com/2021/01/scrapy-xpath-selectors.html )。取得了所有熱門文章的下一層網頁網址後,就可以透過迴圈來進行請求,如下範例:
import scrapy
class HotNewsSpider(scrapy.Spider):
name = 'hot_news'
allowed_domains = ['www.inside.com.tw']
def parse(self, response):
post_urls = response.xpath(
"//a[@class='hero_menu_link']/@href").getall()
for post_url in post_urls:
yield scrapy.Request(post_url, self.parse_content)
其中Request方法(Method)的第一個參數,就是「請求網址」,也就是熱門文章的下一層網頁網址,而第二個參數就是請求該網址後,所要執行的方法(Method),而parse_content()方法(Method)中,就是來爬取熱門文章的下一層網頁內容,以本文為例就是包含「文章標題」及「文章摘要」。
接著,就可以在parse_content()方法(Method)中,同樣使用Scrapy框架的xpath()方法(Method),來爬取「文章標題」及「文章摘要」,如下範例:
import scrapy
class HotNewsSpider(scrapy.Spider):
...
def parse_content(self, response):
# 熱門文章標題
hot_news_title = response.xpath(
"//h1[@class='post_header_title js-auto_break_title']/text()").get()
# 熱門文章摘要
hot_news_intro = response.xpath(
"//div[@class='post_introduction']/text()").get()
print(f"熱門文章標題:{hot_news_title},\n熱門文章摘要:{hot_news_intro}")
利用以下的指令執行Scrapy網頁爬蟲:
$ scrapy crawl hot_news
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike(https://www.learncodewithmike.com/2021/02/scrapy-follow-links-and-collect-data.html
)網站觀看更多精彩內容。
2 0 570 0
學習精靈

02/28 00:00

5 0
Mike Ku

Learn Code With Mike品牌創辦人

2022/01/15

掌握Scrapy框架重要的CSS定位元素方法(上)
想要開發Python網頁爬蟲的朋友,都會知道定位元素(Element)是一個非常重要的動作,Scrapy框架本身就有提供自己的定位元素(Element)方法(Method),包含CSS與XPath兩種,本文就以INSIDE硬塞的網路趨勢觀察網站-AI新聞( https://www.inside.com.tw/tag/ai )為例,先來和大家分享在Scrapy框架中,如何利用CSS的定位元素(Element)方法(Method),爬取想要的網頁內容。
Q: Scrapy如何利用CSS方法取得單一元素值?
CSS(Cascading Style Sheets)階層樣式表相信大家都不陌生,可以自訂樣式的類別來裝飾網頁,像是字體顏色、粗體等,所以在利用Scrapy框架開發網頁爬蟲時,也就能夠利用CSS樣式類別,來定位想要爬取的網頁元素(Element)。
前往INSIDE硬塞的網路趨勢觀察網站-AI新聞,在文章標題的地方,點擊滑鼠右鍵,選擇檢查,可以看到它的CSS樣式類別。假設想要在Scrapy框架中,利用CSS樣式類別來取得網頁的單一元素值,也就是單一文章的標題,就可以在spiders/inside.py的parse()方法(Method)中,使用css()方法(Method)來定位單一元素(Element),如下範例:
import scrapy
class InsideSpider(scrapy.Spider):
name = 'inside'
allowed_domains = ['www.inside.com.tw']
def parse(self, response):
title = response.css("a.js-auto_break_title::text").get()
print(title)
接著,利用以下的指令執行inside網頁爬蟲:
$ scrapy crawl inside
以上範例,response就是Scrapy框架請求後的回應結果,接著,呼叫css()方法,傳入所要定位的HTML標籤<a>,點的後面加上它的CSS樣式類別,由於要取得元素(Element)的文字,所以在加上「::text」關鍵字,最後,呼get()方法(Method)取得單一元素(Element)。
Q: Scrapy如何利用CSS方法取得多個元素值?
而在Scrapy框架中,想要爬取網頁多個元素值,則呼叫getall()方法(Method)即可,如下範例:
import scrapy
class InsideSpider(scrapy.Spider):
name = 'inside'
allowed_domains = ['www.inside.com.tw']
def parse(self, response):
titles = response.css("a.js-auto_break_title::text").getall()
print(titles)
可以看到getall()方法(Method)回傳的是一個串列(List),包含了所有樣式類別為「js-auto_break_title」的<a>標籤文字,接下來,利用迴圈即可取得其中的文章標題,如下範例:
import scrapy
class InsideSpider(scrapy.Spider):
name = 'inside'
allowed_domains = ['www.inside.com.tw']
def parse(self, response):
titles = response.css("a.js-auto_break_title::text").getall()
for title in titles:
print(title)
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2021/01/scrapy-css-selectors.html
)網站觀看更多精彩內容。
2 0 179 0
學習精靈

10/13 00:00

1 0

推薦給你

知識貓星球

喵星人

11/23 19:44

為什麼我的團隊出現「數據孤島」的情形?如何解決資訊不流通
數據孤島(Data Silos)是指在組織內部,不同部門或系統之間的數據無法有效共享和整合的現象。這種情況通常導訊息的孤立,影響企業的運營效率和決策能力。
【數據孤島的特點】
- 隔離性:數據孤島中的數據只能由特定的部門或團隊訪問,其他部門無法獲取或使用這些數據,造成訊息流通不暢。
- 重複性:不同部門可能會儲存相同的數據,導致資源浪費和數據不一致的問題。
- 決策困難:由於數據分散,企業難以進行全面的數據分析,影響決策的準確性和及時性。
【數據孤島的成因】
1. 技術障礙:不同部門使用的系統和平台可能不兼容,缺乏統一的數據標準和接口,導致數據無法共享。
2. 組織結構:各部門之間缺乏協作機制,可能出於自身利益考量而不願意共享數據,形成部門壁壘。
3. 數據治理不足:缺乏系統的數據治理策略,導致數據管理混亂,影響數據的質量和可靠性。
【數據孤島的影響】
✔ 降低效率:數據孤島會導致業務流程繁瑣,無法實現高效的跨部門協同,增加工作負擔。
✔ 影響決策:由於無法獲取全面的數據支持,管理層在做出決策時可能面臨困難,增加決策風險。
✔ 資源浪費:重複的數據存儲和處理不僅浪費了時間和人力資源,還可能導致數據的過時和不準確。
解決數據孤島問題的技術手段主要集中在數據整合、數據治理和系統協作等方面。以下是一些有效的技術方法:
【解決數據孤島的技術手段】
1. 數據集成平台
數據集成平台可以將來自不同系統的數據集中存儲、處理和分發,實現數據的一致性和可視化。這些平台通常使用ETL(提取、轉換、加載)工具來整合數據,從而消除數據孤島。
2. 數據倉庫和數據湖
數據倉庫和數據湖可以集中管理來自不同來源的數據,提供統一的數據視圖。數據倉庫適合結構化數據,而數據湖則能處理結構化和非結構化數據,支持更靈活的數據分析。
3. 統一的數據治理框架
建立明確的數據治理策略,包括數據分類、質量標準和安全規範,能夠提高數據的質量和一致性,並促進數據的共享和利用。
4. 雲ERP系統
雲ERP系統通過統一的平台整合企業的各個業務模塊,實現數據的集中管理和共享。這種系統能夠實時更新數據,提升決策效率和準確性,並減少IT成本。
5. API和微服務架構
功能:使用API(應用程式介面)和微服務架構可以促進不同系統之間的數據交互,實現靈活的數據共享和整合。這種方法能夠打破系統之間的壁壘,促進數據的流通。
6. 數據虛擬化技術
功能:數據虛擬化技術通過創建虛擬數據視圖,使得用戶能夠從多個數據源中一次性檢索數據,而不需要知道數據實際存儲的位置,從而提升數據訪問效率。
0 0 302 0
你可能感興趣的教室