【发布时间】:2020-09-09 14:34:00
【问题描述】:
我正在尝试从 HTML 文档中提取一系列表格,并从用作标题的标签中附加一个带有常量值的新列。然后的想法是使这个新的三列表成为数据框。下面是我到目前为止提出的代码。 IE。每个表都有第三列,其中所有行的值将等于 AGO、DPK、ATK 或 PMS,具体取决于表系列前面的标题。将不胜感激任何帮助,因为我是 python 和 HTML 的新手。谢谢你!
import pandas as pd
from bs4 import BeautifulSoup
from robobrowser import RoboBrowser
br = RoboBrowser()
br.open("https://oilpriceng.net/03-09-2019")
table = br.find_all('td', class_='vc_table_cell')
for element in table:
data = element.find('span', class_='vc_table_content')
prod_name = br.find_all('strong')
ago = prod_name[0].text
dpk = prod_name[1].text
atk = prod_name[2].text
pms = prod_name[3].text
if br.find('strong').text == ago:
data.append(ago.text)
elif br.find('strong').text == dpk:
data.append(dpk.text)
elif br.find('strong').text == atk:
data.append(atk.text)
elif br.find('strong').text == pms:
data.append(pms.text)
print(data.text)
df = pd.DataFrame(data)
The result i'm hoping for is to go from this
AGO
Enterprise Price
Coy A $0.5/L
Coy B $0.6/L
Coy C $0.7/L
to the new table below as a dataframe in Pandas
Enterprise Price Product
Coy A $0.5/L AGO
Coy B $0.6/L AGO
Coy C $0.7/L AGO
and to repeat the same thing for other tables with DPK, ATK and PMS information
【问题讨论】:
-
您可以编辑您的问题并在此处放置所需的输出示例吗?从描述中很难看出预期是什么?
-
感谢安德烈的反馈。我已经清理了一下,希望这更容易理解
标签: python html beautifulsoup robobrowser