iT邦幫忙

2024 iThome 鐵人賽

DAY 30
0
Python

初學者的 30 天 Python 復健課程系列 第 30

復健第三十天:OMG 最後一天來爬個蟲吧

  • 分享至 

  • xImage
  •  

雖然不知道各位學程式語言的動機是什麼,不過像我個人是因為有天突發奇想,很想要自己抓取股票公開資訊觀測站的股市資訊,所以便開始了自學 Python 的旅程,在這個自學的過程中,發現有著同樣想法的人不在少數,但真正能堅持到最後的人卻也不多,所以如果能自己一路走完這個三十天,甚至是看完我寫完這三十天,萬分感謝之餘,仍是感謝!

最後一天了,用網頁爬蟲來做個結尾吧!

什麼是網頁爬蟲 Web Scraping?

網路上充滿了大量的數據,這些數據可以用於不同的目的,如果要收集這些數據,我們需要知道如何從網站中抓取數據。

網頁爬蟲是從網站中提取和收集數據並將其存儲在本地機器或資料庫中的過程。

這次我們將使用 BeautifulSouprequests 這兩個套件來進行數據抓取。
其中有關 BeautifulSoup 的使用細節,可以先去看看 BeautifulSoup 官方文件,可以更了解下面的程式碼在做什麼。

pip install requests
pip install beautifulsoup4

要從網站中抓取數據,必須對 HTML 標籤和 CSS 選擇器有基本的了解,因為我們會透過 HTML 標籤與 class 屬性或 id 屬性來定位網站中的內容。

首先,我們匯入 requestsBeautifulSoup 模組:

import requests
from bs4 import BeautifulSoup

接下來,宣告一個變數來存放要抓取的網站 URL。

import requests
from bs4 import BeautifulSoup

url = 'https://archive.ics.uci.edu/ml/datasets.php'

# 使用 requests 的 get 方法從網站獲取數據
response = requests.get(url)

# 檢查狀態碼
status = response.status_code
print(status)  # 200 表示成功獲取數據

執行上述程式後,應該會看到如下輸出:

200

這表示成功獲取了網站數據。

接下來,我們使用 BeautifulSoup 來解析網頁內容:

import requests
from bs4 import BeautifulSoup

url = 'https://archive.ics.uci.edu/ml/datasets.php'

response = requests.get(url)
content = response.content  # 獲取網站的全部內容
soup = BeautifulSoup(content, 'html.parser')  # 使用 BeautifulSoup 解析 HTML 內容

# 解析網頁標題
print(soup.title)  # <title>UCI Machine Learning Repository: Data Sets</title>
print(soup.title.get_text())  # UCI Machine Learning Repository: Data Sets

# 解析網頁 body 標籤內的內容
print(soup.body)

# 確認回應的狀態碼
print(response.status_code)

接著,我們來提取網頁中的表格內容:

import requests
from bs4 import BeautifulSoup

url = 'https://archive.ics.uci.edu/ml/datasets.php'

response = requests.get(url)
content = response.content
soup = BeautifulSoup(content, 'html.parser')

# 查找所有帶有 cellpadding 屬性值為 3 的表格
tables = soup.find_all('table', {'cellpadding': '3'})

# 我們要找的表格被存放在列表中,因此取出列表中的第一個表格
table = tables[0]

# 查找表格中的所有 td 標籤,並打印其中的文本內容
for td in table.find('tr').find_all('td'):
    print(td.text)

執行這段代碼後,會發現數據已經成功擷取了一半,也就代表成功地爬到我們部分的想要資料了,接下來就是針對其他所需的內容,繼續一點一點地完成爬蟲。

後記

竟然⋯⋯完賽了!(?)


上一篇
復健第二十九天:怎麼樣都(可能)不會搞壞電腦的虛擬環境 Virtual Environment
系列文
初學者的 30 天 Python 復健課程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言