iT邦幫忙

2024 iThome 鐵人賽

DAY 30
0
Python

Python大戰之網頁爬蟲系列 第 30

[Day 30]總結

  • 分享至 

  • xImage
  •  

30天一晃就過去了,我真的有堅持著每天都發文,這邊先給自己掌聲鼓勵一下!!!
(有兩三天有事情沒內容,但別在意這些小細節嘛 ==)

這30天真的過得很充實,雖然是很累沒錯啦,每天都要去學習不同的題材,每天還都要不斷的構思,
去理解並思考要怎麼把學到的東西呈現出來,做到都快要瘋掉了......

但經過這一段堅持的學習後,我真的覺得我有學習到很多課堂以外的知識,
畢竟課堂上課大多都只是為了考試,而這次的學習是真的在為了自己的知識而打拼,
真的感覺有很大的不同。

在這次學習中,我總共學習了反爬蟲技術HTML/CSS基礎Selenium自動化爬蟲BeautifulSoup爬蟲工具Scrapy大範圍爬蟲框架
Pandas數據處理MySQL資料庫操作、以及SQLite

我在撰寫心得的時候,這麼一看,我這一個月真的學習了好多好多東西,突然感覺挺有成就感的呢~~~

那這邊,我就挑幾個過程中最有印象的,最後的來複習一下這段時間學習的東西:


最一開始,我先學習了反爬蟲技術。反爬蟲是網站防止自動化爬蟲大量抓取數據的一系列技術措施。
網站通常會設置多種檢測方式來分辨訪問者是人類還是機器,
其中常見的手段包括IP封鎖限制請求頻率和使用CAPTCHA驗證
要繞過這些措施,我學會了如何模擬真實的瀏覽器行為。

在最初的操作中,我了解到如何修改HTTP請求中的標頭,使請求看起來像是由瀏覽器發出的,這
能夠有效地降低被檢測到為機器人的風險。特別是User-Agent這個欄位,
它告訴網站來訪者使用的是哪款瀏覽器。許多網站會檢查這個欄位,
如果發現是機器請求,可能會拒絕或阻止訪問。
因此,我學習了如何在網頁請求中模擬不同的瀏覽器資訊,讓請求更像是由真人發出的。

接下來,我還學到了應對IP封鎖的方法。網站如果檢測到來自同一IP的過多請求,
可能會封禁該IP。在這種情況下,我了解到可以使用代理IP來繞過封鎖,也就是通過不同的IP地址發送請求,
以避免被網站識別和封鎖。此外,調整請求的時間間隔也非常重要,
模擬隨機的等待時間,讓爬蟲行為更加接近人類的正常瀏覽行為,從而減少觸發反爬蟲機制的機會。

之後,我開始探索如何使用MySQL資料庫來儲存爬蟲抓取到的數據。
首先,我在本地安裝並配置了MySQL。這個過程包括設置資料庫的根用戶帳戶和密碼,
並為資料存儲創建了一個專用的資料庫。在設置完成後,
我學會如何通過命令行工具來管理MySQL,這是進行資料操作的基礎。

接下來,我嘗試通過Python語言中的MySQL連接器庫來連接資料庫。
這需要設定資料庫的主機、使用者名稱、密碼等資訊,以便讓程式能夠正確連線並操作資料。

起初,我遇到了使用者授權不足的錯誤,系統提示無法訪問資料庫。
為了解決這個問題,我在MySQL命令行中為該使用者授予了資料庫的完全操作權限,
這樣使用者才能對資料庫進行讀寫操作。

在成功連接資料庫後,我學會了如何在資料庫中創建資料表,
這是存放數據的結構化格式。資料表通常由多個欄位組成,對應不同的數據類型,
比如查詢的關鍵字、爬取到的搜尋結果等。學會創建資料表後,
我進一步學習了如何將網頁爬蟲獲得的數據插入到資料表中。
這涉及到先將數據處理成合適的格式,再將其逐條寫入資料庫。

進行這些操作的過程中,我多次遇到與資料庫連接相關的錯誤,
例如當連接超時或語法錯誤時,資料庫會返回錯誤訊息。我需要細心檢查每個步驟,
確保連接配置正確,SQL語句符合語法規範,並且在每次操作後正確關閉資料庫連接,
避免因為資源佔用過多而影響效能。

接下來,我深入學習了Selenium這個自動化工具。
Selenium能模擬人類用戶在瀏覽器上的操作,
這對於動態網站的數據爬取非常有用。

首先,我學習如何使用Selenium啟動瀏覽器,
並將瀏覽器導航至指定的網站頁面。這個過程模擬了用戶在瀏覽器中打開網站的行為,
Selenium會自動打開一個Chrome瀏覽器並訪問Google首頁。

接下來,我使用Selenium來模擬在搜尋框中輸入查詢關鍵字的過程,
這讓我可以自動進行Google搜尋。輸入關鍵字後,
Selenium還可以模擬按下回車鍵以觸發搜尋功能。
整個操作過程完全模擬了用戶使用鍵盤進行互動的行為。

搜尋完成後,我學習如何從網頁上抓取搜尋結果。
Selenium允許我定位到網頁中的特定元素,並提取該元素中的文本數據,
這些數據就是我所需要的搜尋結果。這是一個非常有趣的過程,
因為它展示了Selenium強大的功能,能夠像人類一樣瀏覽和操作網頁。

最後,為了方便後續的數據分析,
我運用了Pandas這個資料處理工具來將搜尋結果保存到CSV文件中。
Pandas能夠將結構化數據轉換成表格格式,並提供了許多便捷的數據處理方法。

我將提取到的搜尋結果存入一個DataFrame,
並使用Pandas內建的功能將數據保存為本地的CSV文件。


總結這次學習,從反爬蟲技術MySQL資料庫的操作,
再到使用Selenium進行動態網站的自動化爬取,
以及最後將數據保存到CSV文件的完整流程,
我獲得了非常豐富的經驗。每個步驟都有相應的挑戰,
尤其是在解決各種技術錯誤時,
我學會了如何仔細檢查每個細節,並進一步理解了每種技術的工作原理。

整體來說,這次學習讓我對網頁爬蟲技術及其數據儲存有了更深入的掌握,
並且強化了我對自動化工具和資料庫操作的綜合能力。


以上就是這次學習的統整心得了,就到這邊,下次再見了各位!!!


上一篇
[Day 29] 週休日
系列文
Python大戰之網頁爬蟲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言