BeautifulSoup не получает вывод - PullRequest
       4

BeautifulSoup не получает вывод

0 голосов
/ 04 февраля 2019

Итак, я хочу вывести футбольную статистику из таблицы, но сначала я хочу получить стол с супом.Вот где у меня проблема, я всегда получаю пустой список.

Вот код:

import requests
from bs4 import BeautifulSoup

url = 'https://www.eredmenyek.com/foci/nemetorszag/bundesliga/'

oldal = requests.get(url)

soup = BeautifulSoup(oldal.text, "lxml")

review_table_elem = soup.find_all('div', {'class': 'stats-table-container'})

print(review_table_elem)

И HTML-код:

многоDiv здесь выше

<div class="stats-table-container"><table id="table-type-1" class="stats-table stats-main table-1" title=""> //And here is the table

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Одной альтернативой селену является reports-html .Поскольку вы уже знакомы с запросами, вы сможете легко их получить.

from bs4 import BeautifulSoup
from requests_html import HTMLSession
import requests
session = HTMLSession()
r = session.get('https://www.eredmenyek.com/foci/nemetorszag/bundesliga/')
r.html.render(sleep=5)
soup = BeautifulSoup(r.html.html, "html.parser")
review_table_elem = soup.find_all('div', {'class': 'stats-table-container'})
print(review_table_elem)
0 голосов
/ 04 февраля 2019

Страница, с которой вы взаимодействуете, сильно зависит от javascript для отображения его содержимого.Данные, которые вы ищете, не будут отображаться в ответе, который вы получите с помощью requests, потому что они не оценивают javascript.

Для достижения этого вам необходимо использовать что-то, что делает, например, Selenium WebDriver.Вот решение, использующее его и безголовый экземпляр Chrome.В дополнение к установке модуля selenium вам потребуется загрузить ChromeDriver и изменить следующий код, чтобы он указывал на расположение, в которое вы извлекли его:

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless")

driver = webdriver.Chrome(
    options=options, executable_path=r"C:\chromedriver\chromedriver.exe"
)

try:
    driver.get("https://www.eredmenyek.com/foci/nemetorszag/bundesliga/")
    soup = BeautifulSoup(driver.page_source, "html.parser")

    for row in soup.select(".stats-table-container tr"):
        print("\t".join([e.text for e in row.select("td")]))

finally:
    driver.quit()

Результат:

1.      Borussia Dortmund       20      15      4       1       51:20   49            
2.      Mönchengladbach 20      13      3       4       41:18   42            
3.      Bayern München  20      13      3       4       44:23   42            
4.      RB Leipzig      20      11      4       5       38:18   37            
5.      Frankfurt       20      9       5       6       40:27   32   
...         
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...