iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0
自我挑戰組

養爬蟲的人學爬蟲系列 第 17

【Day 17】半個月以來的總結

  • 分享至 

  • xImage
  •  

閒聊
鐵人賽至目前要經過一半了,覺得時間過的好快。
今天就讓我們一起回顧半個月以來都學了些什麼吧!/images/emoticon/emoticon07.gif

Python環境設定

  • Python
  • Visual Studio Code
  • 其他Pythin套件

Python 語法

  • 資料型態
  • 條件判斷:在python中比較特別有if-elif-else
  • 迴圈:單個loop、巢狀loop。
  • Function(函數)

處理CSV文件

  1. 在Python中,可以將CSV檔中的資料,使用基本語法(例如list)將資料印出來。
  2. 可以使用Python將CSV檔的資料畫成圖表。

Chrom 開發工具

  • Devtools
    在爬蟲中常用的是Devtools裡面的 元素面板 Elements網路面板 Network
  1. 元素面板 Elements:定位元素的 class 、 id 或者 Xpath,了解哪些元素要被爬取。
  2. 網路面板 Network:分析當前頁面伺服器請求的資訊(狀態、種類、時間、 Requests、Response...)。

Requests
Python HTTP庫(外部函式庫),具備 GETPOST請求用法。

  1. Get:提交的參數會在標題頭傳送(公開)。
  2. POST:提交的參數會在內容中傳送(隱密)。

HTTPS 狀態代碼

狀態代碼 說明
200 網頁正常
301 網頁搬家,會重新導向新的URL
302 暫時移到新位置
400 錯誤的要求
401 未授權,需攜帶憑證
403 沒有權限
404 找不到網頁
500 伺服器錯誤
502 伺服器某個服務沒有正確執行
503 伺服器暫時無法處理請求(流量附載過大)
504 伺服器沒有回應

Requests-HTML
擁有Rquests請求功能,也具有清洗功能。

  • 支援功能
    1.JavaScript
    2.CSS選擇器
    3.Xpath選擇器
    4.自定義模擬User-Agent
    5.自動追蹤定向
    6.Cookie持久化
    7.非同步請求

  • 資料定位

  1. find()
  2. xpath()
  3. search()
  4. 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檔案中分析資料,也可以拿來修復錯誤文件。

  • 常用著名解析HTML文件的方法
    1.html.parser:相容性較不好。
    2.lxml:速度快,相容性佳。
    3.html5lib:速度較慢,但解析能力強,本篇會使用這個方法。

  • 定位

  1. 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檔案

結語
原來半個月可以學習這麼多東西!
明天要回到爬蟲的世界,繼續前進。/images/emoticon/emoticon08.gif

明天!
【Day 18】動態網頁爬蟲-Selenium(1/2)


上一篇
【Day 16】把爬完的資料用JSON儲存吧!(實作PTT 3/3)
下一篇
【Day 18】動態網頁爬蟲-Selenium(1/2)
系列文
養爬蟲的人學爬蟲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言