如何在Python中从HTML表的同一行中获取相同的行项目,并将其附加到CSV文件中

如何在Python中从HTML表的同一行中获取相同的行项目,并将其附加到CSV文件中,python,beautifulsoup,Python,Beautifulsoup,我对Python非常陌生,正在尝试从一个网站中提取一个表,其中HTML表中同一行的项目在CSV输出中位于同一行 from bs4 import BeautifulSoup # BeautifulSoup is in bs4 package import requests URL = 'https://ir.huntsman.com/news-releases/detail/427/huntsman-announces-full-year-2019- earnings-another-year

我对Python非常陌生,正在尝试从一个网站中提取一个表,其中HTML表中同一行的项目在CSV输出中位于同一行

from bs4 import BeautifulSoup # BeautifulSoup is in bs4 package 
import requests
URL = 'https://ir.huntsman.com/news-releases/detail/427/huntsman-announces-full-year-2019- 
earnings-another-year-of'
content = requests.get(URL)
soup = BeautifulSoup(content.text, 'html.parser')

body = soup.find(text="Table 3 -- Factors Impacting. 
SalesRevenue").find_parent(class_="prntblns")

rows = body.find_all('tr') # Extract and return first occurrence of tr


import csv

for elem in rows:
    wrappers = elem.find_all(class_="prnews_p")
    for x in wrappers:
        title = x.get_text()
        with open("new.csv", "a") as csv_file:
            writer = csv.writer(csv_file)
            writer.writerow([title])
输出结果如下所示:我希望输出结果更类似于表,即“聚氨酯(11%)(1%)5%4%”都在一条线上。我感谢你的帮助

Polyurethanes
(11%)
(1%)
5%
4%
将熊猫作为pd导入
df=pd.read\u html(
"https://ir.huntsman.com/news-releases/detail/427/huntsman-announces-full-year-2019-earnings-another-year-of")[5][6:18]
df.to_csv(“result.csv”,index=False,header=None)
输出:

按用户请求更新:

将熊猫作为pd导入
df=pd.read\u html(
"https://ir.huntsman.com/news-releases/detail/427/huntsman-announces-full-year-2019-earnings-another-year-of“,match=“表3——影响销售收入的因素”)[0][6:18]
df.to_csv(“result.csv”,index=False,header=None)

您将一个带有单个
title
元素的列表传递给
writerow
,因此每条记录都在一个单独的行中也就不足为奇了

您还可以将打开文件移动到外部作用域:

with open("new.csv", "a") as csv_file:
    writer = csv.writer(csv_file)
    for row in rows:
        wrappers = row.find_all(class_="prnews_p")
        writer.writerow(map(lambda x: x.get_text(), wrappers))

你想提取完整的表格吗?你在处理哪一部分?我不需要提取完整的表格,我只需要输出方面的帮助,目前,它显示在不同的行上,但是我希望它显示在同一行上,最好用逗号分隔。@jackbauer我的意思是,你想要这样的输出吗?谢谢……你能解释一下[5][6:18]是什么意思吗?@jackbauer
pandas
正在返回一个表列表。因此,我们可以访问
列表[5]
表5
,然后我们可以访问
[6:18]
@jackbauer的列表,如果我的回答对您有所帮助的话。请在答案旁边勾选复选标记,接受我的答案,如果你喜欢,也可以向上投票。谢谢你,非常有帮助。我计划每季度做一次,这样表#可能会改变,有没有办法搜索字符串“即表3——影响销售收入的因素”并让它给我文本所在的表#?谢谢你的帮助。