разбор всего html стола с красивым супом - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь использовать красивый суп, чтобы скрести таблицу html в pandas.

URL-адрес https://www.investing.com/equities/exxon-mobil-income-statement

Я идентифицировал таблицу в коде HTML (id = "rrtable"), но я спотыкаюсь при получении этого разбора и в pandas dataframe.

Сайт возвращал ошибку 403, поэтому мне пришлось сначала установите заголовки так, чтобы они обходили 403.

Я ожидаю увидеть фрейм данных с 5 столбцами и строками финансовых данных, но вместо этого я просто получаю необработанные заголовки и никакого содержимого. Где это идет не так?

#!/usr/local/bin/python3

import requests
from bs4 import BeautifulSoup
import pandas as pd

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
url = "https://www.investing.com/equities/exxon-mobil-income-statement"
page = requests.get(url, headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')

table = soup.find_all(id="rrtable")

df = pd.DataFrame(table)

print(df)

Любая помощь будет высоко ценится!

Спасибо

1 Ответ

1 голос
/ 30 марта 2020
import requests
import pandas as pd

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0'}
r = requests.get(
    "https://www.investing.com/equities/exxon-mobil-income-statement", headers=headers)
df = pd.read_html(r.content)[1]

df.to_csv("data.csv", index=False)

вывод: просмотр в режиме онлайн

Образец вывода:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...