Когда я пытаюсь запросить данные, их нет.Как я могу это исправить? - PullRequest
0 голосов
/ 03 февраля 2019

Я сам пытаюсь создать красивую библиотеку python для разработки и понял, что мне нужна помощь.

import requests
from bs4 import BeautifulSoup

url = "https://www.basketball-reference.com/players/j/jamesle01.html"
r = requests.get(url)
soup = BeautifulSoup(r.content,"html.parser")
data = soup.find_all("table",{"class":"row_summable sortable stats_table now_sortable"})
print(data)

Ответы [ 2 ]

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

Вы можете просто использовать Selenium для рендеринга страницы, а затем получить HTML:

from selenium import webdriver
from bs4 import BeautifulSoup

url = "https://www.basketball-reference.com/players/j/jamesle01.html"

driver = webdriver.Chrome()
driver.get(url)

html = driver.page_source

soup = BeautifulSoup(html,"html.parser")
data = soup.find_all("table",{"class":"row_summable sortable stats_table now_sortable"})
print(data)
0 голосов
/ 03 февраля 2019

HTML-файл, который вы загружаете, отличается от HTML-кода, отображаемого на веб-странице.В определенный момент при загрузке веб-страницы javascript добавляет класс now_sortable к таблице в вашем браузере.

Когда вы загружаете страницу с помощью запросов, этот бит javascript никогда не выполняется, и поэтому в вашей таблице нет класса now_sortable, и поэтому вы не можете найти элемент.

Попробуйте изменить код на:

data = soup.find_all("table",{"class":"row_summable sortable stats_table"})

Общий совет: при загрузке файла с использованием запросов попробуйте сохранить страницу, которую вы запросили локально, чтобы вы могли правильно ее просмотреть:

with open('local_page.html', 'w', encoding='utf-8') as fout:
    fout.write(r.text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...