104學習精靈

Beautifulsoup

Beautifulsoup
關注
邀請朋友
邀請朋友

Line

Facebook

複製連結

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

Beautifulsoup 學習推薦

全部
影片
文章
Mike Ku

Learn Code With Mike品牌創辦人

2021/12/29

快速入門Scrapy框架的5個執行模組及架構
一般想要自動化蒐集網頁上的資料時,普遍都會使用像BeautifulSoup或Selenium套件開發Python網頁爬蟲來取得,但是,如果所要爬取的資料量較大,擁有複雜的邏輯處理及效率的要求,這時候就會建議使用Scrapy框架,來幫助開發人員建立一個維護性較好的Python網頁爬蟲。
而要使用Scrapy框架來開發大型的Python網頁爬蟲專案前,本文就先來帶大家瞭解一下Scrapy框架。
Q:Scrapy框架是什麼?
Srapy是一個網頁爬蟲「框架」,擁有完整的Python網頁爬蟲開發功能,也提供開發人員能夠進行客製化,並且,有一定的專案架構及執行流程,所以在未來的維護上較為容易。
另外,Scrapy框架是基於Twisted非同步網路框架所建立的,執行效率也非常的好,適用於大型的Python網頁爬蟲專案。而Scrapy框架與常應用於網頁爬蟲的BeautifulSoup及Selenium套件比較,可以參考BeautifulSoup vs Selenium vs Scrapy三大Python網頁爬蟲實作工具的比較( https://www.learncodewithmike.com/2020/11/beautifulsoup-vs-selenium-vs-scrapy-for-python-web-scraping.html )文章。
Q:Scrapy框架模組包含哪些?
Scrapy框架是由以下5個主要模組結合而成,各自有負責的職責,來達成有效率的非同步Python網頁爬蟲,其中每個模組的功能說明如下:
1.SPIDERS(爬蟲程式):撰寫Python網頁爬蟲程式碼的地方,向ENGINE(引擎)發送網頁請求,以及將ENGINE(引擎)所接收的回應結果進行解析與爬取。
2.ENGINE(引擎):Scrapy框架的核心模組,就像汽車的引擎一樣,負責控制各個模組、傳遞請求及資料。
3.SCHEDULER(調度器):將ENGINE(引擎)所接收的SPIDERS(爬蟲程式)請求進行列隊,也就是排隊的意思,來調度請求的順序。
4.DOWNLOADER(下載器):負責下載ENGINE(引擎)接收到SCHEDULER(調度器)調度請求的網頁HTML原始碼,提供回應結果給ENGINE(引擎)。
5.ITEM PIPELINE(資料模型管道):將SPIDERS(爬蟲程式)所取得的資料進行後續處理,像是資料清理、存入資料庫(例:MySQL)或存入檔案文件(例:CSV、JSON)等。
Q:Scrapy框架執行流程是如何運作的?
對Scrapy框架的5個主要模組有一個基本的認識後,各個模組間的關係及執行流程又是什麼呢?
1.ENGINE(引擎)接收SPIDERS(爬蟲程式)所發送的一至多個請求。
2.ENGINE(引擎)將請求傳遞給SCHEDULER(調度器)進行列隊。
3.ENGINE(引擎)向SCHEDULER(調度器)提取下一個所要發送的請求。
4.ENGINE(引擎)將請求傳遞給DOWNLOADER(下載器)。
5.DOWNLOADER(下載器)將ENGINE(引擎)傳遞的請求網頁HTML原始碼下載下來,並且回應結果給ENGINE(引擎)。
6.ENGINE(引擎)將回應的結果傳遞給SPIDERS(爬蟲程式)。
7.SPIDERS(爬蟲程式)進行結果的解析及資料的爬取,組成ITEMS,傳遞給ENGINE(引擎)或發送新的請求。
8.ENGINE(引擎)判斷SPIDERS(爬蟲程式)所傳遞過來的如果是ITEMS(資料),就會傳遞給ITEM PIPELINES(資料模型管道),進行後續的資料清理及儲存等。反之,如果傳遞過來的是新的請求,也就是相當於第一個步驟,接著,傳遞給SCHEDULER(調度器),以此類推,重覆這樣的流程,直到SCHEDULER(調度器)沒有請求為止。
本文簡單介紹了Scrapy是一個功能完整與快速的Python網頁爬蟲框架,包含5個主要模組,各司其職,藉由ENGINE(引擎)來進行整合,並且依照一定的執行流程,來達成非同步的網頁資料爬取,適用於大型且複雜的Python網頁爬蟲專案,希望接下來的系列教學內容能夠幫助大家對Scrapy框架有一個基本的認識。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/12/python-scrapy-architecture.html )網站觀看更多精彩內容。
2 0 441 2

熱門精選

104學習精靈

產品

11/15 12:57

【最新】2024年11月AI課程熱門排行榜TOP 10:最受歡迎的AI學習課程推薦
從AI基礎知識到應用,市面上提供了各種AI學習課程:AI線上課程、AI實體課程,無論您是初學者還是專業人士,都可以找到適合自己的AI課程。本文將為您揭曉2024年11月最受歡迎的AI課程排行榜,幫助您輕鬆找到優質的AI學習資源,快速掌握AI技能。
本篇透過從104課程中心的用戶學習大數據,整理出大家都在搜尋的TOP 10 熱門課程;可透過排行榜,找到你所需的學習內容,增進職場的職能成長,加強自我競爭力,打造你的職涯藍圖!
第1名。ChatGPT x Excel | 職場必學商務數據分析術
講師將以系統化教學法,教授數據分析常用情境,搭上火紅 ChatGPT ,步驟式實戰,能隨學即用,讓你知道如何在工作中運用所學到的技能!
第2名。AI資料科學家【 聽課全系列 】
「基礎思維」AI資料科學的新朋友,必定要了解一下人工智慧的歷史里程碑與事件,從這裡出發,您也能與不熟悉這個領域的朋友侃侃而談地分享您所學領域的轉變與趨勢,而初學者免不了學習的十字路口,不知道該從哪個部分開始學習AI,這裡也會給您適合適當的指引。常常被混的網頁爬蟲與ETL您真的認識並了解嗎?聽聽看TibaMe的講師們怎麼說吧!
第3名。生成式AI應用速成:商業溝通師-數位行銷課(12/21開課)
🔴報名截止日:2024/12/8🔴
你可以學到
🌟AI 行銷創作零基礎也能秒上手|不需任何行銷經驗,快速學會生成式 AI 工具,輕鬆打造吸睛行銷素材。
🌟行銷策略效果爆發式成長| 有效運用 AI 提升執行力,讓行銷效率飆升、策略效果倍增。
🌟精準鎖定目標受眾,打中痛點| 用 AI 技術解析消費者行為,精準掌握市場趨勢,一次抓住受眾需求。
🌟品牌形象全面升級| AI 創造獨特行銷風格,讓品牌成為目光焦點,迅速在市場中脫穎而出。
第4名。2小時輕鬆學AI | 基礎觀念與應用
從資料科學的基礎觀念談起、商業智慧、資料探勘、影像辨識等技術應用,最後再討論企業實際導入人工智慧所需的相關流程。
第5名。生成式AI應用速成:創作詠唱師-影音創作課(11/30開課)
🔴報名截止日:2024/11/17🔴
你可以學到
🌟虛擬角色打造 | 從角色設計、到AI影片製作,一站式打造你的專屬虛擬網紅。
🌟短影音製作 | 運用AI工具,快速生成各種特效、濾鏡,製作出精緻的短影音。
🌟內容行銷 | 學習如何利用AI工具製作出更能觸動觀眾的內容。
第6名。生成式AI工具應用實戰 (線上直播課程)
你可以學到
行銷廣告文案+社群策略及內容+SEO生成+BingAI繪圖,一次學會生成式AI工具應用!
本課程「生成式AI工具應用」旨在教導學員如何利用最先進的生成式AI工具,特別是ChatGPT和微軟Bing AI繪圖工具,來提升行銷文案、社群媒體內容、SEO優化、廣告文案創作以及內容行銷的效率和成效。
第7名。生成式AI應用速成:創作詠唱師-繪圖設計課(12/21開課)
🔴報名截止日:2024/12/8🔴
你可以學到
🌟成為AI設計高手| 從設計小白變身AI設計達人,自信接下各種設計挑戰。
🌟擴大職涯發展| 掌握AI設計技能,提升職場競爭力,開拓更多職涯發展機會。
🌟節省設計成本| 減少外包設計費用,提高工作效率,為企業創造更多價值。
🌟實現創意無限| 突破傳統設計框架,用AI工具打造出獨一無二的視覺作品。
第8名。AI應用時代|從邏輯思維到文字溝通,從職場複利到高效生活
藉由AI助手的力量,更高效地完成商務工作、激發靈感。也透過AI協助經營社群,包含工作行程、日常旅遊、飲食規劃等,提高短影音規劃的效率,進而產出斜槓複利。
第9名。一次搞懂 ChatGPT 工作法 | 5分鐘看懂,立即上手 AI 應用觀念!
5分鐘輕巧學:圖解式影音 X 25應用情境 X 30組AI神器
第10名。AI x 產品企劃(產品開發)實務應用班
你可以學到
往在產品企劃及開發上,所面臨到的難以解決的疑難問題,在未來都有機會利用AI工具進一步改善,取得更有效的解決方案。
本課程將教會您如何快速掌握AI在商業分析、創意生成、行銷文案、用戶旅程設計與消費者行為洞察中的應用,並了解如何將這些工具應用於產品企劃流程中。
更多AI課程推薦:
2 0 8368 1
Mike Ku

Learn Code With Mike品牌創辦人

2021/10/19

7個降低Python網頁爬蟲被偵測封鎖的實用方法(下)
本文將延續「7個降低Python網頁爬蟲被偵測封鎖的實用方法(上)」,接續分享降低Python網頁爬蟲被偵測封鎖的方法。
Q:如何設定參照位址(Referer)
請求表頭(Request Headers)中另一個重要的欄位就是參照位址(Referer),用來告訴網站這個請求(Request)是來自於哪一個網站,如下範例:
headers = {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-TW,zh;q=0.9",
"Host": "example.com",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "none",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36",
"Referer": "https://www.google.com/" #參照位址
}
response = requests.get(url="https://example.com", headers=headers)
這時候可以使用像SEMRush( https://www.semrush.com/ )的工具,來顯示目標網頁的反向連結,也就是能夠到達目標網頁的其它連結,就可以在Python網頁爬蟲的每一次請求(Request)前,將不同的反向連結設定到參照位址(Referrer)中,讓每一次的來源網站都不相同,降低被網頁偵測到的風險。
Q:如何設定隨機的延遲時間?
在每一次請求(Request)之間,最好設定隨機的延遲時間(Delay),這樣除了防止每一次的請求(Request)間隔時間不同之外,也沒有固定的請求模式,可以參考以下的範例:
delay_choices = [8, 5, 10, 6, 20, 11]
delay = random.choice(delay_choices)
time.sleep(delay) #延遲
Q:使用無頭瀏覽器(Headless Browser)的方法?
無頭瀏覽器(Headless Browser)和一般瀏覽器不一樣的地方是,它沒有圖形化的使用者介面,通常會使用指令的方式來執行,知名的Selenium套件就可以讓開發人員利用程式碼,自動化控制瀏覽器的執行,模擬人類的操作,降低被偵測到的風險,使用的方式可以參考[Python爬蟲教學]整合Python Selenium及BeautifulSoup實現動態網頁爬蟲文章( https://www.learncodewithmike.com/2020/05/python-selenium-scraper.html )。
Q:如何避免掉入網頁蜜罐陷阱(Honeypot Traps)
網頁蜜罐陷阱(Honeypot Traps)就是許多網頁會在HTML原始碼中埋入只有網頁爬蟲會讀取到的隱藏連結或屬性,如果在開發Python網頁爬蟲沒有注意或避開時,很容易就會被偵測到而被封鎖,舉例來說,有個隱藏的連結帶有「display:none」或「visibility: hidden」的CSS屬性等,這是正常的使用者看不到,而網頁爬蟲所能讀取到的。
要避免掉入網頁蜜罐陷阱(Honeypot Traps),除了要注意網頁的HTML原始碼之外,另一個方法就是在開發Python網頁爬蟲時,可以參考該網頁的網站地圖(Sitemap),其中會列出公開給使用者存取的網頁網址,在開發的過程中,就盡量挑選裡面的公開網址來進行爬取。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/09/7-tips-to-avoid-getting-blocked-while-scraping.html )網站觀看更多精彩內容
2 0 319 1

推薦給你

知識貓星球

喵星人

1小時前

意志動詞是什麼?一次學Will、Want、Decide、Hope、Plan、Promise和Intend
在多益考試中,意志動詞(Verbs of Willingness and Intention)是常見的文法考題,這些動詞用來表達說話者的意圖、決心或願意做某事的態度。而這些動詞包括:will、want、decide、hope、plan、promise和intend 等,本篇文章帶你認識這七個意志動詞以及它們的文法規律!
▍七個意志動詞
1. Will – 表示未來的意圖或決定
⇨ Will 是最常見的意志動詞,用來表達說話者的未來計劃或願意做的事情。
• 例句:I will attend the meeting tomorrow.
我明天會參加會議。
• 例句:She will help you with the project.
她會幫你處理這個專案。
2. Want – 表示願望或需求
⇨ Want 表示某人希望或渴望某事。
• 例句:I want to improve my English skills.
我想提高我的英語能力。
• 例句:They want to meet the client next week.
他們想下週見客戶。
3. Decide – 表示做出決定
⇨ Decide 用來表示某人已經做出決定,並且要進行某個行動。
• 例句:We decided to launch the new product next month.
我們決定下個月推出新產品。
• 例句:She decided not to attend the conference.
她決定不參加會議。
4. Hope – 表示希望或期望
⇨ Hope 是一個表達願望或期望的動詞,通常不會直接接動詞原形,會使用 to 或 that 引導的從句。
• 例句:I hope to get a promotion soon.
我希望不久後能升遷。
• 例句:We hope that the project will be completed on time.
我們希望專案能按時完成。
5. Plan – 表示計劃
⇨ Plan 表示某人為未來的某個行動制定計劃。
• 例句:We plan to expand our business to Europe next year.
我們計劃明年將業務擴展到歐洲。
• 例句:She plans to start a new project in the coming months.
她計劃在未來幾個月開始一個新專案。
6. Promise – 表示承諾
⇨ Promise 表示某人保證做某事,通常有強烈的意圖去完成某個目標。
• 例句:I promise to submit the report by Friday.
我保證在週五前提交報告。
• 例句:They promised to provide a solution within 24 hours.
他們保證在24小時內提供解決方案。
7. Intend – 表示打算
⇨ Intend 表示某人計劃或打算做某事。
• 例句:We intend to hold the meeting in the morning.
我們打算在早上召開會議。
• 例句:She intends to leave the company next year.
她打算明年離開公司。
▍文法規律
1. 後接動詞原形 to V
⇨ 這些意志動詞後面通常接動詞的原形,表示將來的動作或意圖。
• 例句:She will attend the meeting.
她會參加會議。
• 例句:They want to improve their performance.
他們希望提高表現。
2. 部分動詞後接 to + 動詞原形
⇨ 部分意志動詞(如 hope, plan, decide, intend)後面接 to 再加動詞原形,這是這些動詞的固定搭配!
• 例句:We hope to finish the project by next week.
我們希望在下週前完成這個專案。
• 例句:They plan to expand the market.
他們計劃擴展市場。
3. 後接名詞或名詞片語
⇨ 這些動詞後接名詞或名詞片語,表達意圖或決定。
• 例句:I decided on a new strategy.
我決定了新的策略。
• 例句:He promised a better outcome.
他承諾會有更好的結果。
4. 特殊情況:hope 的用法
⇨ 雖然 hope 常常後接 to + 動詞原形,但當 hope 用在表達期望的時候,常常會接 that 引導的從句。
• 例句:I hope that the meeting goes well.
我希望會議順利進行。
• 例句:They hope that the project will be completed on time.
他們希望專案能按時完成。
5. 未來意圖的表達
⇨ 這些意志動詞多數與未來相關,表示某人計劃、希望或願意做某事,因此它們的語法結構通常指向未來。
• 例句:We will attend the conference next month.
我們下個月會參加會議。
• 例句:She intends to start a new business.
她打算開創一個新業務。
希望這篇文章對你有幫助!記得加入共學教室掌握我們的最新文章,一起提升多益實力!
0 0 15 0
你可能感興趣的教室