新聞中心
隨著人們對(duì)數(shù)據(jù)的需求不斷增加,數(shù)據(jù)爬取技術(shù)也變得越來(lái)越重要。在實(shí)際應(yīng)用中,經(jīng)常會(huì)遇到需要從網(wǎng)頁(yè)中獲取表格數(shù)據(jù)并進(jìn)行特定操作的情境,而Python可以輕松實(shí)現(xiàn)這一需求。本文將結(jié)合Python的相關(guān)庫(kù)和實(shí)例,探討的不同方法和應(yīng)用。

一、Python庫(kù)介紹
1. Beautiful Soup庫(kù)
Beautiful Soup作為Python庫(kù)的其中一種,主要是針對(duì)解析HTML和XML文檔所設(shè)計(jì)的。其優(yōu)點(diǎn)在于不需要像正則表達(dá)式一樣寫(xiě)很復(fù)雜的代碼,而可以比較迅速地對(duì)復(fù)雜的HTML和XML文檔進(jìn)行解析。開(kāi)發(fā)者可以通過(guò)Beautiful Soup來(lái)找到文檔中的特定內(nèi)容、標(biāo)簽、甚至是屬性,并提取出它們以供分析和操作。
2. Pandas庫(kù)
Pandas是Python中的數(shù)據(jù)分析庫(kù)。它的主要作用是用于數(shù)據(jù)處理和數(shù)據(jù)分析,可以非??焖俚亻_(kāi)展數(shù)據(jù)的導(dǎo)入、整合、變換和聚合等操作,并支持多種數(shù)據(jù)格式,包括 CSV、Excel、SQL和HTML等。同時(shí)在處理數(shù)據(jù)上,Pandas庫(kù)比Python內(nèi)置的數(shù)據(jù)處理模塊效率更高,而且使用起來(lái)更加方便。
3. Requests庫(kù)
Requests庫(kù)是Python中處理HTTP請(qǐng)求的庫(kù),我們通過(guò)它構(gòu)建HTTP請(qǐng)求,可以模擬瀏覽器的行為,從而得到網(wǎng)頁(yè)數(shù)據(jù)。通過(guò)Requests庫(kù)獲取的返回?cái)?shù)據(jù)可以是HTML頁(yè)面、ON數(shù)據(jù)、圖片、視頻等等。
二、 Python實(shí)現(xiàn)表格爬取
在Python中,實(shí)現(xiàn)表格爬取需要用到Beautiful Soup庫(kù)和Pandas庫(kù)。下面將介紹如何通過(guò)Python來(lái)實(shí)現(xiàn)表格爬取:
1. 導(dǎo)入庫(kù)
在Python中,需要先導(dǎo)入使用的庫(kù)。導(dǎo)入Beautiful Soup庫(kù)和Pandas庫(kù)的代碼如下:
“`
from bs4 import BeautifulSoup
import pandas as pd
import requests
“`
2. 獲取網(wǎng)頁(yè)信息
獲取表格數(shù)據(jù)首先需要獲取相應(yīng)的網(wǎng)頁(yè)數(shù)據(jù)。在這里,我們可以通過(guò)Requests庫(kù)來(lái)獲取網(wǎng)頁(yè),獲取網(wǎng)頁(yè)信息的代碼如下:
“`
url = “https://www.runoob.com/html/html-tables.html”
r = requests.get(url)
“`
其中,url是要爬取的網(wǎng)頁(yè)地址。r是Requests庫(kù)返回的網(wǎng)頁(yè)內(nèi)容,包括網(wǎng)頁(yè)源代碼和各種返回的狀態(tài)碼等信息。為了檢查我們得到的結(jié)果是否正確,您可以打印出返回的結(jié)果。
“`
print(r.text[:1000])
“`
3. 解析網(wǎng)頁(yè)
通過(guò)Beautiful Soup庫(kù)的解析,可以將HTML文件中的每個(gè)標(biāo)簽都用對(duì)象的方式表示出來(lái),以供后續(xù)訪問(wèn)或挖掘。請(qǐng)看下面的代碼片段。
“`
soup = BeautifulSoup(r.text, ‘html.parser’)
“`
在這里,我們使用BeautifulSoup庫(kù)將網(wǎng)頁(yè)內(nèi)容解析成一個(gè)樹(shù)形結(jié)構(gòu)的對(duì)象,這個(gè)對(duì)象中含有HTML文檔的所有標(biāo)簽,并通過(guò)樹(shù)形結(jié)構(gòu)的形式呈現(xiàn)出來(lái)。
下面我們可以找到表格的標(biāo)簽,把標(biāo)簽提取出來(lái),再用Pandas庫(kù)創(chuàng)建一個(gè)數(shù)據(jù)結(jié)構(gòu)用于存儲(chǔ)數(shù)據(jù)。
“`
table = soup.find(‘table’, attrs={‘class’: ‘reference’})
data = []
for tr in table.find_all(‘tr’):
t_row = []
for td in tr.find_all(‘td’):
t_row.append(td.text.strip())
data.append(t_row)
df = pd.DataFrame(data, columns=[“A”, “B”, …,”R”])
“`
在上述代碼中,表格的頂級(jí)標(biāo)簽是
| 。 每個(gè) | 元素中的文本信息,即為我們要獲得的表格數(shù)據(jù),將其追加到存儲(chǔ)表格數(shù)據(jù)的列表(data)里。在把表格數(shù)據(jù)轉(zhuǎn)化為數(shù)據(jù)框(DataFrame)的過(guò)程中,我們還選擇了填充表頭。 到這里,已經(jīng)完成了數(shù)據(jù)的存儲(chǔ)和處理。如果需要將爬取的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)或其他格式的文件中,您可以使用其他Python庫(kù)進(jìn)行操作。 三、應(yīng)用案例 下面給大家介紹通過(guò)Python實(shí)現(xiàn)從網(wǎng)站爬取數(shù)據(jù)的應(yīng)用案例。我們將從指定的數(shù)據(jù)源爬取一張網(wǎng)頁(yè)中的表格數(shù)據(jù),并將獲取到數(shù)據(jù)顯示在Python庫(kù)中。 1. 爬取百度百科Python頁(yè)面中的Python技術(shù)棧圖 Python官網(wǎng)提供了一張Python技術(shù)棧圖可以讓使用Python的開(kāi)發(fā)者更好地了解這門(mén)語(yǔ)言的使用??赡芎芏嗳艘呀?jīng)看過(guò)這張圖,但是它的來(lái)源并不是很了解。 以下是用Python庫(kù)爬取Python官網(wǎng)上的Python技術(shù)棧圖并顯示在Python庫(kù)中的代碼: “` import requests from bs4 import BeautifulSoup import io from PIL import Image url = ‘https://www.python.org/’ headers={ ‘User-Agent’:’Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/58.0.3029.110Safari/537.36′} response = requests.get(url, headers=headers) result = response.text soup = BeautifulSoup(result, ‘lxml’) class_tech = [] for div in soup.find_all(“div”, {‘class’: ‘sh-spinner-border loading-spin’}): div.decompose() for img in soup.find_all(‘img’): if img[‘a(chǎn)lt’] == ‘python software foundation’: if ‘https:’ not in img[‘src’]: imgurl = ‘https://python.org’ + img[‘src’] else: imgurl = img[‘src’] print(imgurl) response = requests.get(imgurl, headers=headers) img = Image.open(io.BytesIO(response.content)) img.show() “` 2. 爬取某個(gè)國(guó)家疫情數(shù)據(jù) 由于新冠肺炎疫情影響,各大和組織紛紛公布了相關(guān)疫情數(shù)據(jù),以方便科學(xué)家和普通民眾了解和防控疫情。Python可以快速地收集和分析這些數(shù)據(jù),并提取出有用的信息。 以下是一個(gè)從世界衛(wèi)生組織網(wǎng)站獲取疫情數(shù)據(jù)的代碼示例: “` import pandas as pd import requests from bs4 import BeautifulSoup # 下載疫情網(wǎng)頁(yè)數(shù)據(jù),并讀取表格 coronavirus_url = “https://covid19.who.int/table” r = requests.get(coronavirus_url) soup = BeautifulSoup(r.content, ‘html.parser’) tables=soup.find_all(‘table’) table=tables[0] # 將表格處理為DataFrame格式 data = [] rows = table.find_all(‘tr’) for tr in rows: cols = tr.find_all(‘td’) cols = [ele.text.strip() for ele in cols] data.append([ele for ele in cols if ele]) # 輸出表格 df = pd.DataFrame(data) print(df) “` 注意:由于疫情數(shù)據(jù)動(dòng)態(tài)更新,可能在爬取時(shí)結(jié)果并不是最新數(shù)據(jù)。建議結(jié)合多個(gè)數(shù)據(jù)源和爬蟲(chóng)可動(dòng)態(tài)更新的策略確認(rèn)數(shù)據(jù)。 四、 成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)! 怎么用python爬取相關(guān)數(shù)據(jù)以下代碼運(yùn)行通過(guò): import requests from bs4 import BeautifulSoup import os headers = { ‘User-Agent’: “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) “ “Chrome/22.0.1207.1 Safari/537.1”} ## 瀏覽器請(qǐng)求頭(大部分網(wǎng)站沒(méi)有這個(gè)請(qǐng)求頭會(huì)報(bào)錯(cuò)) all_url = ‘ start_html = requests.get(all_url, headers=headers) ## 使用 requests 中的 get 方法來(lái)獲取培擾 all_url 的內(nèi)容 headers 為請(qǐng)求頭 print(start_html.text) ## 打印 start_html ## concent 是二進(jìn)制的數(shù)據(jù),下載圖片、視頻、音頻、等多媒體內(nèi)容時(shí)使用 concent ## 敏含打印網(wǎng)頁(yè)內(nèi)容時(shí)使用 text 運(yùn)行橋中笑效果: python爬取表格數(shù)據(jù)庫(kù)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于python爬取表格數(shù)據(jù)庫(kù),Python實(shí)現(xiàn)表格數(shù)據(jù)庫(kù)爬取技術(shù),怎么用python爬取相關(guān)數(shù)據(jù)的信息別忘了在本站進(jìn)行查找喔。 數(shù)據(jù)庫(kù)運(yùn)維技術(shù)服務(wù) ? Python實(shí)現(xiàn)表格數(shù)據(jù)庫(kù)爬取技術(shù) (python爬取表格數(shù)據(jù)庫(kù)) 管理員 普通分享到: 相關(guān)推薦
無(wú)法連接Oracle虛擬機(jī)數(shù)據(jù)庫(kù)的解決方法 (連不上虛擬機(jī) oracle數(shù)據(jù)庫(kù))
如何保證數(shù)據(jù)庫(kù)同步中一條數(shù)據(jù)的完整性? (數(shù)據(jù)庫(kù) 同步 一條數(shù)據(jù))
高效利用:多個(gè)數(shù)據(jù)庫(kù)查詢提升工作效率 (多個(gè)數(shù)據(jù)庫(kù)查詢)
TP框架輕松實(shí)現(xiàn)數(shù)據(jù)庫(kù)更新操作 (tp框架 更新一條數(shù)據(jù)庫(kù))
應(yīng)對(duì)海量數(shù)據(jù):數(shù)據(jù)庫(kù)百萬(wàn)級(jí)實(shí)現(xiàn)技巧分享 (數(shù)據(jù)庫(kù)百萬(wàn)級(jí))
深入探究3種DB2數(shù)據(jù)庫(kù)目錄架構(gòu) (3.db2數(shù)據(jù)庫(kù)目錄架構(gòu))
如何在Oracle數(shù)據(jù)庫(kù)中管理A和B? (已知oracle數(shù)據(jù)庫(kù)a b)
定時(shí)檢查數(shù)據(jù)庫(kù)數(shù)據(jù)的設(shè)定方法 (如何設(shè)定定時(shí)檢查數(shù)據(jù)庫(kù)數(shù)據(jù))隨機(jī)文章如何管理Oracle數(shù)據(jù)庫(kù)臨時(shí)表空間 (oracle數(shù)據(jù)庫(kù)臨時(shí)表空間) 如何高效地進(jìn)行數(shù)據(jù)庫(kù)關(guān)鍵字查詢? (數(shù)據(jù)庫(kù) 關(guān)鍵字 查詢) 如何查詢DB2數(shù)據(jù)庫(kù)的字符集? (db2數(shù)據(jù)庫(kù)字符集查詢) JPA實(shí)現(xiàn)兩個(gè)數(shù)據(jù)庫(kù)用戶查詢語(yǔ)句 (jpa兩個(gè)數(shù)據(jù)庫(kù)用戶查詢語(yǔ)句) 深入淺出Oracle數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)指南 (oracle數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)) Dedecms數(shù)據(jù)庫(kù)備份路徑設(shè)置指南 (dedecms數(shù)據(jù)庫(kù)備份路徑) 最近更新標(biāo)簽Linux Linux教程 Linux資訊 MacOS MacOS教程 MacOS資訊 MongoDB MongoDB教程 MongoDB資訊 MSSQL MSSQL錯(cuò)誤 MySQL mysql教程 MySQL維護(hù) MySQL資訊 Neo4j Neo4j教程 Neo4j資訊 ORACLE Oracle優(yōu)化 oracle內(nèi)部視圖 oracle參數(shù) oracle開(kāi)發(fā) oracle異常修復(fù) oracle故障處理 oracle教程 oracle維護(hù) oracle視圖 ORACLE資訊 oracle遠(yuǎn)程維護(hù) ORA錯(cuò)誤碼 Redis Redis教程 Redis資訊 SQLServer SQLServer報(bào)錯(cuò) SQLServer教程 SQLServer資訊 SQL修復(fù) SQL異常 SQL遠(yuǎn)程處理 Windows 技術(shù)文檔 操作系統(tǒng) 數(shù)據(jù)庫(kù)
安全登錄 立即注冊(cè) 忘記密碼? |
香港服務(wù)器選創(chuàng)新互聯(lián),香港虛擬主機(jī)被稱(chēng)為香港虛擬空間/香港網(wǎng)站空間,或者簡(jiǎn)稱(chēng)香港主機(jī)/香港空間。香港虛擬主機(jī)特點(diǎn)是免備案空間開(kāi)通就用, 創(chuàng)新互聯(lián)香港主機(jī)精選cn2+bgp線路訪問(wèn)快、穩(wěn)定!
當(dāng)前名稱(chēng):Python實(shí)現(xiàn)表格數(shù)據(jù)庫(kù)爬取技術(shù)(python爬取表格數(shù)據(jù)庫(kù))
網(wǎng)頁(yè)路徑:http://fisionsoft.com.cn/article/ccdgsje.html


咨詢
建站咨詢
