104學習精靈

資料擷取

資料擷取
關注
邀請朋友
邀請朋友

Line

Facebook

複製連結

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

資料擷取 學習推薦

全部
影片
文章
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 582 0

熱門精選

104學習精靈

產品

02/10 23:02

【免費報名】零經驗↘只要12週↘您也可以轉職資料工程師。專業技術養成班|線上開課說明會
想轉換跑道當資料工程師,但又不知道如何開始?
坊間這麼多培訓班,怎麼能跟業界銜接?
報名在這邊 > >
緯育TibaMe x 104學習精靈 現正舉辦【跨領域轉職資料工程師。課程說明會】
透過12週培訓課程:從基礎 → 進階、團體專題,課後就業媒合,協助您成功轉職!
【本場說明會包含兩個資料工程師_聯合招生說明】
A【資料工程師_養成班】 3/10 確定開班
課程相關完整介紹搶先看:
B【資料工程師_在職班】 4/15 確定開班
課程相關完整介紹搶先看:(後補)
【班級滿額就無法再招生,趕緊報名搶席次吧!】
--------------------------------
本課程將提供104報名會員優惠,優惠折扣將於線上說明會揭曉:
⚡ 線上說明會 | 緯育TibaMe的優惠,透過104活動吧報名,才享有該優惠。
⚡ 確認報名課程,可享 緯育TibaMe 相關付款優惠(例如:信用卡分期...等)
真的!席次最後倒數!免費報名!相信自己一次!
--------------------------------
【報名場次】
🔴 2/15 (六) 11:00~12:00 | 報名到2/14 (五) 18:00
線上說明會連結與資訊,將於2/14(五)18:00 後陸續發送到您報名的電子郵件信箱。
🔴 2/22 (六) 11:00~12:00 | 報名到2/21 (五) 18:00
線上說明會連結與資訊,將於2/21(五)18:00 後陸續發送到您報名的電子郵件信箱。
🔴 2/27 (四) 20:00~21:00 | 報名到2/26 (三) 18:00
線上說明會連結與資訊,將於2/26(三)18:00 後陸續發送到您報名的電子郵件信箱。
0 1 10377 2
學習精靈

10/18 00:00

13 0
Mike Ku

Learn Code With Mike品牌創辦人

2022/01/19

一定要懂的Scrapy框架結合Gmail寄送爬取資料附件秘訣
本文將爬取的結果存入CSV檔案後,透過Gmail附件郵寄給使用者。在開始之前,大家可以先參考[Python實戰應用]Python寄送Gmail電子郵件實作教學文章( https://www.learncodewithmike.com/2020/02/python-email.html )的第二節步驟,取得Gmail的應用程式密碼,以便能夠利用它的SMTP(簡易郵件傳輸協定)來發送郵件。
Q: Scrapy MailSender結合Gmail發送郵件
在Scrapy網頁爬蟲框架中,想要實作發送電子郵件的功能,可以使用內建的MailSender模組(Module),透過基本的設定即可達成。開啟Scrapy專案的settings.py設定檔,加入以下的Gmail SMTP設定:
MAIL_HOST = "smtp.gmail.com"
MAIL_PORT = 587
MAIL_FROM = "申請Gmail應用程式密碼所使用的電子郵件帳號"
MAIL_PASS = "Gmail應用程式密碼"
MAIL_TLS = True
並且,將[Scrapy教學7]教你Scrapy框架匯出CSV檔案方法提升資料處理效率文章( https://www.learncodewithmike.com/2021/01/scrapy-export-csv-files.html )中所建立的CsvPipeline資料模型管道設定開啟,如下範例:
ITEM_PIPELINES = {
'news_scraper.pipelines.CsvPipeline': 500,
}
設定完成後,開啟ITEM PIPELINE資料模型管道(pipelines.py)檔案,引用Scrapy框架的設定檔及MailSender模組(Module),如下範例:
from itemadapter import ItemAdapter
from news_scraper import settings
from scrapy.mail import MailSender
接著,在CsvPipeline類別(Class)的close_spider()方法(Method)中,來建立Scrapy MailSender物件,以及指定Gmail的附件,包含「附件顯示的名稱(attach_name)」、「網際網路媒體類型(mime_type)」及「檔案物件(file_object)」,如下範例:
class CsvPipeline:
...
def close_spider(self, spider):
self.exporter.finish_exporting()
self.file.close()
mail = MailSender(smtphost=settings.MAIL_HOST,
smtpport=settings.MAIL_PORT,
smtpuser=settings.MAIL_FROM,
smtppass=settings.MAIL_PASS,
smtptls=settings.MAIL_TLS)
attach_name = "posts.csv"
mime_type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
file_object = open("posts.csv", "rb")
return mail.send(to=["example@gmail.com"],
subject="news",
body="",
attachs=[(attach_name, mime_type, file_object)])
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike(https://www.learncodewithmike.com/2021/02/scrapy-sending-gmail.html
)網站觀看更多精彩內容。
2 0 349 0
學習精靈

05/15 00:00

4 0

推薦給你

104學習精靈

產品

5小時前

【學習0負擔,職涯成長100%】刷卡分期 0 利率,輕鬆進修!
想提升職場競爭力,卻擔心學習費用負擔太大?
現在,104學習精靈推出:刷卡分期 0 利率分期服務,讓你無壓力學習,快速成長!
💡 單筆消費滿 4,000 元 享 3 期 0 利率
💡 單筆消費滿12,000 元 享 6 期 0 利率
無論是提升專業技能,還是轉職跨領域,現在是最佳時機!
利用彈性付款方式,投資自己,迎接更好的職涯發展。
【精選課程整理】立即選擇適合你的課程,開啟無壓學習之旅!
⚡ Linux系統建置實務 【享 3 期 0 利率】
加碼:領 折$1000送百點 優惠券現折
⚡ 碳管理師菁英班 【享 3 期 0 利率】
加碼:領 折千元↘送2百點 優惠券現折
⚡ 【轉換率優化集訓班 】進階應用 【享 3 期 0 利率】
加碼:領 折1102 元 優惠券現折
⚡ 行銷人的 GTM 實戰工作坊【享 3 期 0 利率】
⚡ 【RevitBIM】AR建築BIM建模師養成班(台中) 【享 6 期 0 利率】
加碼:領 折 2000 元 優惠券現折
⚡ 【RevitBIM】AR建築BIM建模師養成班(台北) 【享 6 期 0 利率】
加碼:領 折 2000 元 優惠券現折
⚡ 【RevitBIM】MEP五大系統整合實務班(贈 iCAP消防空調 雙證班) 【享 6 期 0 利率】
加碼:領 折 2000 元 優惠券現折
⚡ 嵌入式Linux設計開發 【享 6 期 0 利率】
加碼:領 折 3000 元 優惠券現折
⚡ MCU應用設計[ARM Cortex-M 應用設計] 【享 6 期 0 利率】
加碼:領 折 3000 元 優惠券現折
⚡USB韌體設計 【享 6 期 0 利率】
加碼:領 折 3000 元 優惠券現折
⚡壓力管理工作坊:釋放壓力,喚醒自信 【享 3 期 0 利率】
加碼:領 折 999 元 優惠券現折
⚡NPDP產品經理國際認證培訓班(2025/03/22 實體班) 【享 6 期 0 利率】
加碼:領 折 1999 元 優惠券現折
⚡ WBSA商務行銷企劃師國際認證培訓 (2025/03/22實體班) 【享 6 期 0 利率】
加碼:領 折 1999 元 優惠券現折
⚡AWS雲端解決方案架構師考證班 【享 6 期 0 利率】
加碼:領 折 7500 元 優惠券現折
⚡ AI-Agent實作課- 打造AI助理解決工作SOP【享 6 期 0 利率】
【提醒】加碼優惠有時效性,請依照各課程頁說明為基準。
0 0 18 0
你可能感興趣的教室