Как очистить мои данные в тексте без HTML/TAG?

Я пытаюсь очистить этот веб-сайт (нижняя таблица) https://www.eia.gov/dnav/ng/hist/rngwhhdD.htm, код которого я уже получил. Мне нужна помощь в очистке скопированных данных. (Мне просто нужен текст и удалить HTML-код/теги)

(Этот код ниже работает) (кстати, я делаю это в блокноте Jupyter)

Я пробовал ".text" и ".strip", но пока безуспешно.

import bs4
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
import csv


#open page and grab html
my_url = ('https://www.eia.gov/dnav/ng/hist/rngwhhdD.htm')
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close


#HTML parser
page_soup = soup(page_html, 'html.parser')


#Find table
soup = page_soup.findAll("td",{"class":{"B6","B3"}})

#Print table
print(soup)

Я рассчитываю напечатать все без кодов HTML/тегов. Просто чистый текст в столбцах.


person Rob Grootjen    schedule 05.10.2019    source источник


Ответы (1)


Проверьте следующий код, который соответствует вашему требованию. Кстати, вы можете прочитать BeautifulSoup Document и написать код, чтобы проверить свое мышление. когда у вас проблемы. Надеюсь, это будет полезно для вас.

# There is no need to use alias here which maybe make confusion later, although you can do it
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

# open page and grab html
my_url = ('https://www.eia.gov/dnav/ng/hist/rngwhhdD.htm')
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()

# HTML parser
page_soup = soup(page_html, 'html.parser')

table = []

# Find table
ele_table = page_soup.find("table", summary="Henry Hub Natural Gas Spot Price (Dollars per Million Btu)")
# traverse table
col_tag = 'th'
ele_rows = ele_table.find_all('tr', recursive=False)
for ele_row in ele_rows:
    row = []
    ele_cols = ele_row.find_all(col_tag, recursive=False)
    for ele_col in ele_cols:
        # use empty string for no data column
        content = ele_col.string.strip() if ele_col.string else ''
        row.append(content)
    col_tag = 'td'
    # just save row with data
    if any(row):
        table.append(row)

# print table
for row in table:
    print('\t'.join(row))

person Fogmoon    schedule 05.10.2019