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

一、Python庫介紹
1. Beautiful Soup庫
Beautiful Soup作為Python庫的其中一種,主要是針對解析HTML和XML文檔所設(shè)計(jì)的。其優(yōu)點(diǎn)在于不需要像正則表達(dá)式一樣寫很復(fù)雜的代碼,而可以比較迅速地對復(fù)雜的HTML和XML文檔進(jìn)行解析。開發(fā)者可以通過Beautiful Soup來找到文檔中的特定內(nèi)容、標(biāo)簽、甚至是屬性,并提取出它們以供分析和操作。
2. Pandas庫
Pandas是Python中的數(shù)據(jù)分析庫。它的主要作用是用于數(shù)據(jù)處理和數(shù)據(jù)分析,可以非常快速地開展數(shù)據(jù)的導(dǎo)入、整合、變換和聚合等操作,并支持多種數(shù)據(jù)格式,包括 CSV、Excel、SQL和HTML等。同時(shí)在處理數(shù)據(jù)上,Pandas庫比Python內(nèi)置的數(shù)據(jù)處理模塊效率更高,而且使用起來更加方便。
3. Requests庫
Requests庫是Python中處理HTTP請求的庫,我們通過它構(gòu)建HTTP請求,可以模擬瀏覽器的行為,從而得到網(wǎng)頁數(shù)據(jù)。通過Requests庫獲取的返回?cái)?shù)據(jù)可以是HTML頁面、ON數(shù)據(jù)、圖片、視頻等等。
二、 Python實(shí)現(xiàn)表格爬取
在Python中,實(shí)現(xiàn)表格爬取需要用到Beautiful Soup庫和Pandas庫。下面將介紹如何通過Python來實(shí)現(xiàn)表格爬取:
1. 導(dǎo)入庫
在Python中,需要先導(dǎo)入使用的庫。導(dǎo)入Beautiful Soup庫和Pandas庫的代碼如下:
“`
from bs4 import BeautifulSoup
import pandas as pd
import requests
“`
2. 獲取網(wǎng)頁信息
獲取表格數(shù)據(jù)首先需要獲取相應(yīng)的網(wǎng)頁數(shù)據(jù)。在這里,我們可以通過Requests庫來獲取網(wǎng)頁,獲取網(wǎng)頁信息的代碼如下:
“`
url = “https://www.runoob.com/html/html-tables.html”
r = requests.get(url)
“`
其中,url是要爬取的網(wǎng)頁地址。r是Requests庫返回的網(wǎng)頁內(nèi)容,包括網(wǎng)頁源代碼和各種返回的狀態(tài)碼等信息。為了檢查我們得到的結(jié)果是否正確,您可以打印出返回的結(jié)果。
“`
print(r.text[:1000])
“`
3. 解析網(wǎng)頁
通過Beautiful Soup庫的解析,可以將HTML文件中的每個(gè)標(biāo)簽都用對象的方式表示出來,以供后續(xù)訪問或挖掘。請看下面的代碼片段。
“`
soup = BeautifulSoup(r.text, ‘html.parser’)
“`
在這里,我們使用BeautifulSoup庫將網(wǎng)頁內(nèi)容解析成一個(gè)樹形結(jié)構(gòu)的對象,這個(gè)對象中含有HTML文檔的所有標(biāo)簽,并通過樹形結(jié)構(gòu)的形式呈現(xiàn)出來。
下面我們可以找到表格的標(biāo)簽,把標(biāo)簽提取出來,再用Pandas庫創(chuàng)建一個(gè)數(shù)據(jù)結(jié)構(gòu)用于存儲數(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”])
“`
在上述代碼中,表格的頂級標(biāo)簽是
| 。 每個(gè) | 元素中的文本信息,即為我們要獲得的表格數(shù)據(jù),將其追加到存儲表格數(shù)據(jù)的列表(data)里。在把表格數(shù)據(jù)轉(zhuǎn)化為數(shù)據(jù)框(DataFrame)的過程中,我們還選擇了填充表頭。 到這里,已經(jīng)完成了數(shù)據(jù)的存儲和處理。如果需要將爬取的數(shù)據(jù)存儲到數(shù)據(jù)庫或其他格式的文件中,您可以使用其他Python庫進(jìn)行操作。 三、應(yīng)用案例 下面給大家介紹通過Python實(shí)現(xiàn)從網(wǎng)站爬取數(shù)據(jù)的應(yīng)用案例。我們將從指定的數(shù)據(jù)源爬取一張網(wǎng)頁中的表格數(shù)據(jù),并將獲取到數(shù)據(jù)顯示在Python庫中。 1. 爬取百度百科Python頁面中的Python技術(shù)棧圖 Python官網(wǎng)提供了一張Python技術(shù)棧圖可以讓使用Python的開發(fā)者更好地了解這門語言的使用??赡芎芏嗳艘呀?jīng)看過這張圖,但是它的來源并不是很了解。 以下是用Python庫爬取Python官網(wǎng)上的Python技術(shù)棧圖并顯示在Python庫中的代碼: “` 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è)國家疫情數(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)頁數(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ù)動態(tài)更新,可能在爬取時(shí)結(jié)果并不是最新數(shù)據(jù)。建議結(jié)合多個(gè)數(shù)據(jù)源和爬蟲可動態(tài)更新的策略確認(rèn)數(shù)據(jù)。 四、 成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)! 怎么用python爬取相關(guān)數(shù)據(jù)以下代碼運(yùn)行通過: 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”} ## 瀏覽器請求頭(大部分網(wǎng)站沒有這個(gè)請求頭會報(bào)錯(cuò)) all_url = ‘ start_html = requests.get(all_url, headers=headers) ## 使用 requests 中的 get 方法來獲取培擾 all_url 的內(nèi)容 headers 為請求頭 print(start_html.text) ## 打印 start_html ## concent 是二進(jìn)制的數(shù)據(jù),下載圖片、視頻、音頻、等多媒體內(nèi)容時(shí)使用 concent ## 敏含打印網(wǎng)頁內(nèi)容時(shí)使用 text 運(yùn)行橋中笑效果: python爬取表格數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于python爬取表格數(shù)據(jù)庫,Python實(shí)現(xiàn)表格數(shù)據(jù)庫爬取技術(shù),怎么用python爬取相關(guān)數(shù)據(jù)的信息別忘了在本站進(jìn)行查找喔。 數(shù)據(jù)庫運(yùn)維技術(shù)服務(wù) ? Python實(shí)現(xiàn)表格數(shù)據(jù)庫爬取技術(shù) (python爬取表格數(shù)據(jù)庫) 管理員 普通分享到: 相關(guān)推薦
無法連接Oracle虛擬機(jī)數(shù)據(jù)庫的解決方法 (連不上虛擬機(jī) oracle數(shù)據(jù)庫)
如何保證數(shù)據(jù)庫同步中一條數(shù)據(jù)的完整性? (數(shù)據(jù)庫 同步 一條數(shù)據(jù))
高效利用:多個(gè)數(shù)據(jù)庫查詢提升工作效率 (多個(gè)數(shù)據(jù)庫查詢)
TP框架輕松實(shí)現(xiàn)數(shù)據(jù)庫更新操作 (tp框架 更新一條數(shù)據(jù)庫)
應(yīng)對海量數(shù)據(jù):數(shù)據(jù)庫百萬級實(shí)現(xiàn)技巧分享 (數(shù)據(jù)庫百萬級)
深入探究3種DB2數(shù)據(jù)庫目錄架構(gòu) (3.db2數(shù)據(jù)庫目錄架構(gòu))
如何在Oracle數(shù)據(jù)庫中管理A和B? (已知oracle數(shù)據(jù)庫a b)
定時(shí)檢查數(shù)據(jù)庫數(shù)據(jù)的設(shè)定方法 (如何設(shè)定定時(shí)檢查數(shù)據(jù)庫數(shù)據(jù))隨機(jī)文章如何管理Oracle數(shù)據(jù)庫臨時(shí)表空間 (oracle數(shù)據(jù)庫臨時(shí)表空間) 如何高效地進(jìn)行數(shù)據(jù)庫關(guān)鍵字查詢? (數(shù)據(jù)庫 關(guān)鍵字 查詢) 如何查詢DB2數(shù)據(jù)庫的字符集? (db2數(shù)據(jù)庫字符集查詢) JPA實(shí)現(xiàn)兩個(gè)數(shù)據(jù)庫用戶查詢語句 (jpa兩個(gè)數(shù)據(jù)庫用戶查詢語句) 深入淺出Oracle數(shù)據(jù)庫架構(gòu)設(shè)計(jì)指南 (oracle數(shù)據(jù)庫架構(gòu)設(shè)計(jì)) Dedecms數(shù)據(jù)庫備份路徑設(shè)置指南 (dedecms數(shù)據(jù)庫備份路徑) 最近更新標(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開發(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ù)庫
安全登錄 立即注冊 忘記密碼? |
香港服務(wù)器選創(chuàng)新互聯(lián),香港虛擬主機(jī)被稱為香港虛擬空間/香港網(wǎng)站空間,或者簡稱香港主機(jī)/香港空間。香港虛擬主機(jī)特點(diǎn)是免備案空間開通就用, 創(chuàng)新互聯(lián)香港主機(jī)精選cn2+bgp線路訪問快、穩(wěn)定!
文章標(biāo)題:Python實(shí)現(xiàn)表格數(shù)據(jù)庫爬取技術(shù)(python爬取表格數(shù)據(jù)庫)
文章地址:http://m.5511xx.com/article/ccdgsje.html


咨詢
建站咨詢
