簡體   English   中英

抓取數據以存儲到 Pandas 數據框中

[英]scrape data to store into pandas dataframe

我試圖從這個網站https://en.wikipedia.org/wiki/List_of_chemistry_elements 中抓取表格“化學元素列表”

然后我想將表數據存儲到一個 Pandas 數據幀中,以便我可以將它轉換為一個 csv 文件。 到目前為止,我已經將表的標題抓取並存儲到數據幀中。 我還設法從表中檢索了每一行數據。 但是,我無法將表的數據存儲到數據框中。 以下是我到目前為止所擁有的

from bs4 import BeautifulSoup
import requests as r
import pandas as pd

response = r.get('https://en.wikipedia.org/wiki/List_of_chemical_elements')
wiki_text = response.text
soup = BeautifulSoup(wiki_text, 'html.parser')

table = soup.select_one('table.wikitable')

table_body = table.find('tbody')
#print(table_body)

rows = table_body.find_all('tr')

cols = [c.text.replace('\n', '') for c in rows[1].find_all('th')]

df2a = pd.DataFrame(columns = cols)
df2a

for row in rows:
    records = row.find_all('td')
    if records != []:
        records = [r.text.strip() for r in records]
        print(records)

pandas為你解析:

import pandas as pd

df = pd.read_html('https://en.wikipedia.org/wiki/List_of_chemical_elements')[0]
df.to_csv('file.csv', index=False)

在這里,我找到了所有列數據,其中將其分為第一列數據和第二列數據兩部分

all_columns=soup.find_all("tr",attrs={"style":"vertical-align:top"})
first_column_data=[i.get_text(strip=True) for i in all_columns[0].find_all("th")]
second_column_data=[i.get_text(strip=True) for i in all_columns[1].find_all("th")]

現在因為我們需要 16 列所以取適當的列並將數據添加到new_lst列表,即列列表

new_lst=[]
new_lst.extend(second_column_data[:3])
new_lst.extend(first_column_data[1:])

現在我們必須找到行數據,通過attrs遍歷所有tr並找到相應的td ,它將返回表數據列表main_lst

main_lst=[]
for i in soup.find_all("tr",attrs={"class":"anchor"}):  
    row_data=[row.get_text(strip=True) for row in i.find_all("td")]
    main_lst.append(row_data)

輸出:

Atomic numberZ  Symbol  Name    Origin of name[2][3]    Group   Period  Block   Standardatomicweight[a] Density[b][c]   Melting point[d]    Boiling point[e]    Specificheatcapacity[f] Electro­negativity[g]   Abundancein Earth'scrust[h] Origin[i]   Phase atr.t.[j]
0   1   H   Hydrogen    Greekelementshydro-and-gen, 'water-forming' 1   1   s-block 1.008   0.00008988  14.01   20.28   14.304  2.20    1400    primordial  gas
....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM