Beautifulsoup не возвращает полный HTML-код страницы - PullRequest
0 голосов
/ 07 октября 2018

Я уже некоторое время копаюсь на сайте и не могу найти решение своей проблемы.Я довольно новичок в веб-поиске и пытаюсь просто извлечь некоторые ссылки с веб-страницы, используя красивый суп.

url = "https://www.sofascore.com/pt/futebol/2018-09-18"
page = urlopen(url).read()
soup = BeautifulSoup(page, "lxml")
print(soup)

На самом базовом уровне все, что я пытаюсь сделать, - это получить доступ к определенному тегу на веб-сайте.Я могу решить все остальное для себя, но часть, с которой я борюсь, это то, что искомый тег отсутствует в выводе.

Например: используя встроенную функцию find (), я могу получить следующий тег класса div: class = "l__grid js-page-layout"

Однако, что я на самом деле ищу, так этосодержимое тега, который встроен на более низком уровне в дерево.
js-event-list-tour-events

Когда я выполняю ту же операцию поиска для тега нижнего уровня, я получаюНет результатов.

Используя Jupyter Notebook на основе Azure, я попробовал ряд решений для подобных проблем в стеке, и не повезло.

Спасибо!Кенни

1 Ответ

0 голосов
/ 07 октября 2018

Страница использует JS для динамической загрузки данных, поэтому вы должны использовать селен.Проверьте ниже код.Обратите внимание, что вы должны установить селен и chromedrive (разархивировать файл и скопировать в папку Python)

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

url = "https://www.sofascore.com/pt/futebol/2018-09-18"
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(chrome_options=options)
driver.get(url)
time.sleep(3)
page = driver.page_source
driver.quit()
soup = BeautifulSoup(page, 'html.parser')
container = soup.find_all('div', attrs={
    'class':'js-event-list-tournament-events'})
print(container)

или вы можете использовать их json api

import requests
url = 'https://www.sofascore.com/football//2018-09-18/json'
r = requests.get(url)
print(r.json())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...