Пытаюсь почистить стол с красивым супом в python но тело пусто - PullRequest
0 голосов
/ 26 февраля 2020

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

import requests
from bs4 import BeautifulSoup

source = requests.get("https://www.cmegroup.com/trading/energy/crude-oil/light-sweet-crude.html")
src = source.content

soup = BeautifulSoup(src, features='html.parser')

tables = soup.tbody
print(tables.prettify())

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Привет ниже код работает для меня. Вам нужно использовать селен, чтобы захватить таблицу

from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
import time
webpage = 'https://www.cmegroup.com/trading/energy/crude-oil/light-sweet-crude.html'
driver = webdriver.Chrome(executable_path='Your/path/to/chromedriver.exe') 
driver.get(webpage)
time.sleep(15)
html = driver.page_source

soup = BeautifulSoup(html, "html.parser")
table = soup.find('table')
table_rows = table.find_all('tr')

res = []
for tr in table_rows:
    td = tr.find_all('td')
    row = [tr.text.strip() for tr in td if tr.text.strip()]
    if row:
        res.append(row)


df = pd.DataFrame(res, columns=["Month", "Charts", "Last","Change","Prior Settle","Open ","High","Low","Volume","Hi / Low Limit","Updated"])
print(df)
driver.quit()
0 голосов
/ 26 февраля 2020

Эта таблица, которую вы видите, генерируется / загружается при постобработке с помощью кода Javascript, который используемый вами модуль запросов не поддерживает.

Кто-то недавно рекомендовал перейти на запросы- html модуль вместо.

...