使用Python爬蟲獲取table

HGONR 數碼 4

本文將介紹如何使用Python爬蟲技術獲取網頁中的table,並對其進行處理和分析。

要獲取網頁中的table,首先需要用Python獲取網頁的源代碼。這裡我們推薦使用requests庫。

import requests
url = "https://example.com"
r = requests.get(url)
html = r.text

通過調用requests庫,我們先獲取了一個網頁的內容,並將其存儲在html變數中。

將網頁內容解析成BeautifulSoup對象,方便我們對其中的table進行提取和處理。所以需要安裝並使用BeautifulSoup庫。

from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')

使用BeautifulSoup,我們將html解析成soup,這樣我們就能夠輕鬆有效地訪問和提取其中的元素和屬性。

提取網頁中的table,需要先找到table的標籤。通常情況下,table的標籤是<table>,但是有時候也可能是<tbody>、<tr>或<td>等標籤嵌套所組成的表格結構。

table = soup.find('table')
tbody = table.find('tbody')
rows = tbody.find_all('tr')

使用find方法可以找到第一個匹配的標籤,使用find_all方法可以找到所有匹配的標籤。上面的代碼就是先找到table標籤,再找到其中的tbody標籤,最後找到tbody中的所有tr標籤,即table中的所有行。

處理table一般包括以下幾個方面:

header = []
for th in rows[0].find_all('th'):
    header.append(th.text.strip())
print(header)

在table中,第一行通常是表頭,包含了列名信息。通過遍歷第一行中的所有th標籤,並將th標籤中的文字內容添加到header列表中,我們就可以獲得表格的列名。

data = []
for row in rows[1:]:
    row_data = []
    for td in row.find_all('td'):
        row_data.append(td.text.strip())
    data.append(row_data)
print(data)

在table中,除了表頭,其餘行是表格數據,也就是我們要處理的內容。通過遍歷除第一行以外的所有行,並將每行中所有td標籤的內容添加到row_data列表中,我們就可以獲得表格的數據。

有時候我們需要對獲得的表格數據進行清洗處理,比如格式化數據、去除特殊字元等。

for row in data:
    row[2] = row[2].replace('$', '').replace(',', '')
    row[3] = float(row[3])

上面的代碼中,我們通過replace方法去除了數據中的美元符號和逗號,並使用float將數據從字元串類型轉換為浮點數類型。

最後,我們可以將處理後的表格數據存儲到文件或資料庫中。

import csv
with open('table_data.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(header)
    writer.writerows(data)

上面的代碼中,我們使用csv庫將處理後的表格數據存儲到csv文件中。

通過以上幾個步驟,我們就可以使用Python爬蟲技術獲取網頁中的table,並進行處理和存儲。

回復

共1條回復 我來回復
  • 暫無回復內容