【发布时间】:2021-10-16 13:45:23
【问题描述】:
我正在尝试使用 pandas read_html 将抓取的 HTML 表转换为 python 中的数据框。问题是read_html 将我的一列数据不间断地引入,这使得这些单元格的内容难以解析。在原始 HTML 中,列中的每个“单词”都由一个中断分隔。有没有办法在转换为数据框时保持这种格式或保持“单词”分开?
import requests
from bs4 import BeautifulSoup
import pandas as pd
url="https://www.who.int/en/activities/tracking-SARS-CoV-2-variants/"
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
voc_html = soup.find("table")
#convert to dataframe
voc_df = pd.read_html(str(voc_html))[0]
#retain list of variants
voc_list=voc_df['Pango lineages']
来自voc_list 的示例,其中单独的项目被混合在一起:
voc_list[1]
`B.1.351\xa0B.1.351.2B.1.351.3`
我希望它看起来像什么:B.1.3510 B.1.351.2 B.1.351.3(或将每个项目放在自己的行中)
摘自包含中断的原始 html 版本:
<td style="width:13%;background-color:#69d4ef;text-align:left;vertical-align:middle;">Beta <br/></td><td style="width:12.9865%;background-color:#69d4ef;text-align:left;"><p>B.1.351 <br/>B.1.351.2<br/>B.1.351.3</p></td>
感谢您的指导!
【问题讨论】:
-
预期的输出会是什么样子?
-
我刚刚添加了一个示例输出行!希望这会有所帮助。
标签: python html pandas beautifulsoup