我有一個 beautifulsoup 物件如下
<div class="companyProfileHeader">
<div>Industry<a href="/stock-screener/?sp=country::5|sector::a|industry::146|equityType::a<eq_market_cap;1">Life Sciences Tools & Services</a></div>
<div>Sector<a href="/stock-screener/?sp=country::5|sector::18|industry::a|equityType::a<eq_market_cap;1">Healthcare</a></div>
<div>Employees<p class="bold">17000</p></div>
<div>Equity Type<p class="bold">ORD</p></div>
</div>
我想將以上內容轉換為 Pandas DataFrame,如下所示
預期產出
-------------------------------- ------------ ----------- -------------
| Industry | Sector | Employees | Equity Type |
-------------------------------- ------------ ----------- -------------
| Life Sciences Tools & Services | Healthcare | 17000 | ORD |
-------------------------------- ------------ ----------- -------------
假設 bs 物件名為divlist我已經提取了 using 中的文本,divlist.text但無法適當地對其進行切片以實作上述資料框。
uj5u.com熱心網友回復:
我已將您的資料作為html,您可以使用方法迭代到特定的類find_all,并且我使用串列理解來獲取文本,并用~符號分隔
from bs4 import BeautifulSoup
soup=BeautifulSoup(html,"html.parser")
lst=[i.get_text(strip=True,separator="~") for i in soup.find("div",class_="companyProfileHeader").find_all("div")]
final_lst=[i.split("~") for i in lst ]
現在您可以使用轉換為 DataFramefinal_lst
import pandas as pd
df=pd.DataFrame(final_lst)
df=df.transpose()
df.rename(columns=df.iloc[0], inplace = True)
df.drop(df.index[0], inplace = True)
uj5u.com熱心網友回復:
這是我的做法。
from bs4 import BeautifulSoup
text = """<div class="companyProfileHeader">
<div>Industry<a href="/stock-screener/?sp=country::5|sector::a|industry::146|equityType::a<eq_market_cap;1">Life Sciences Tools & Services</a></div>
<div>Sector<a href="/stock-screener/?sp=country::5|sector::18|industry::a|equityType::a<eq_market_cap;1">Healthcare</a></div>
<div>Employees<p class="bold">17000</p></div>
<div>Equity Type<p class="bold">ORD</p></div>
</div>
"""
soup = BeautifulSoup(text, 'html.parser')
下面將分別提取列和行:
column = [i.next for i in soup.find_all('div', {'class': ''})]
row = [i.next.next.text for i in soup.find_all('div', {'class': ''})]
接下來,創建一個資料框。
import pandas as pd
df = pd.DataFrame(columns=column)
df = df.append(pd.Series(row, index=column), ignore_index=True)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/494422.html
