BeautifulSoup не может найти класс, который существует на веб-странице? - PullRequest
0 голосов
/ 19 сентября 2018

Поэтому я пытаюсь очистить следующую веб-страницу https://www.scoreboard.com/uk/football/england/premier-league/,

В частности, запланированные и законченные результаты.Таким образом я пытаюсь искать элементы с class = "stage-finished" or "stage-scheduled".Однако когда я очищаю веб-страницу и распечатываю, что содержит page_soup , она не содержит этих элементов.

Я нашел еще один вопрос SO с ответом, в котором говорилось, что это потому, что он загружается через AJAX, и мне нужно посмотреть XHR на вкладке сети в инструментах Chrome Dev, чтобы найти файл, который загружает необходимые данные,однако, кажется, его там нет?

import bs4
import requests
from bs4 import BeautifulSoup as soup
import csv
import datetime

myurl = "https://www.scoreboard.com/uk/football/england/premier-league/"
headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36'}
page = requests.get(myurl, headers=headers)

page_soup = soup(page.content, "html.parser")

scheduled = page_soup.select(".stage-scheduled")
finished = page_soup.select(".stage-finished")
live = page_soup.select(".stage-live")
print(page_soup)
print(scheduled[0])

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

Мой вопрос : как мне получить данные, которые я ищу?

Я скопировал содержимое файлов XHR в блокнот и искалсценические и другие теги и ничего не нашли.Я что-то упустил здесь?

1 Ответ

0 голосов
/ 20 сентября 2018

Страница обработана с помощью JavaScript.Вам нужен Селен.Вот некоторый код для начала:

from selenium import webdriver

url = 'https://www.scoreboard.com/uk/football/england/premier-league/'

driver = webdriver.Chrome()
driver.get(url)
stages = driver.find_elements_by_class_name('stage-scheduled')
driver.close()

Или вы можете передать driver.content в метод BeautifulSoup.Например:

soup = BeautifulSoup(driver.page_source, 'html.parser')

Примечание. Сначала необходимо установить веб-драйвер.Я установил хромедрайвер.

Удачи!

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