Как получить те же позиции из таблицы HTML в той же строке в Python при извлечении в файл CSV - PullRequest
0 голосов
/ 15 марта 2020

Я очень новичок в 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%

Ответы [ 2 ]

0 голосов
/ 15 марта 2020

Вы передаете список с одним элементом 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))
0 голосов
/ 15 марта 2020
import pandas as pd

df = pd.read_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)

Вывод: check-online

Обновление по запросу пользователя:

import pandas as pd

df = pd.read_html(
    "https://ir.huntsman.com/news-releases/detail/427/huntsman-announces-full-year-2019-earnings-another-year-of", match="Table 3 -- Factors Impacting Sales Revenue")[0][6:18]

df.to_csv("result.csv", index=False, header=None)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...