閒聊
鐵人賽至目前要經過一半了,覺得時間過的好快。
今天就讓我們一起回顧半個月以來都學了些什麼吧!
Python環境設定
- Python
- Visual Studio Code
- 其他Pythin套件
Python 語法
- 資料型態
- 條件判斷:在python中比較特別有
if-elif-else
。
- 迴圈:單個loop、巢狀loop。
- Function(函數)
處理CSV文件
- 在Python中,可以將CSV檔中的資料,使用基本語法(例如list)將資料印出來。
- 可以使用Python將CSV檔的資料畫成圖表。
Chrom 開發工具
- Devtools
在爬蟲中常用的是Devtools裡面的 元素面板 Elements和 網路面板 Network。
- 元素面板 Elements:定位元素的 class 、 id 或者 Xpath,了解哪些元素要被爬取。
- 網路面板 Network:分析當前頁面伺服器請求的資訊(狀態、種類、時間、 Requests、Response...)。
Requests
Python HTTP庫(外部函式庫),具備 GET
、POST
請求用法。
- Get:提交的參數會在標題頭傳送(公開)。
- POST:提交的參數會在內容中傳送(隱密)。
HTTPS 狀態代碼
狀態代碼 |
說明 |
200 |
網頁正常 |
301 |
網頁搬家,會重新導向新的URL |
302 |
暫時移到新位置 |
400 |
錯誤的要求 |
401 |
未授權,需攜帶憑證 |
403 |
沒有權限 |
404 |
找不到網頁 |
500 |
伺服器錯誤 |
502 |
伺服器某個服務沒有正確執行 |
503 |
伺服器暫時無法處理請求(流量附載過大) |
504 |
伺服器沒有回應 |
Requests-HTML
擁有Rquests請求功能,也具有清洗功能。
- find()
- xpath()
- search()
- search_all()
Pandas模組
專門為編寫Python的外部模組,主要執行數據處理跟分析。
- 索引參照屬性
1.at:使用index、columns內容取得或設定單一元素或陣列的內容。
2.iat:使用index、columns編號取得或設定單一元素的內容。
3.loc:使用index、columns內容取得或設定整個row、columns資料或陣列的內容。
4.iloc:使用index、columns編號取得或設定整個row、columns資料。
- 直接索引
可以使用直接索引的方式,直接取得想要的資料並print出來。
BeautifulSoup
是Python的函式庫,可以從HTML或XML檔案中分析資料,也可以拿來修復錯誤文件。
- soup.find() :回傳第一個符合條件的元素,用str(字串)表示,若沒有則回傳None。
2.soup.find_all():回傳所有符合條件的元素,用list(串列)表示,若沒有則回傳None
3.soup.select(): Css Selector。
爬蟲種類
- 通用網路爬蟲:又稱為「全網爬蟲」,範圍、數據量龐大,例如:Google、Yahoo、百度搜尋引擎。
- 聚焦網路爬蟲:又稱為「主題網路爬蟲」,主要依據需求選擇性爬取相關頁面,不會廣泛爬取。
- 增量式網路爬蟲:主要是爬取新增網頁或是已更新網頁,但也需要比較複雜的演算法,實務上比較少應用。
- 深層網路爬蟲:深層的內容理論上能獲取的資料量較大,因此會儘量爬取此頁面。
爬進PTT八卦版
- 向url發送
get
請求
- 使用Requests和cookies
- 使用迴圈、Requests-HTML中的Css Selector讓爬蟲可以進到下一頁,並且重複這個動作。
- 把爬到的資料存成JSON檔案
結語
原來半個月可以學習這麼多東西!
明天要回到爬蟲的世界,繼續前進。
明天!
【Day 18】動態網頁爬蟲-Selenium(1/2)