当我尝试请求数据时,它不返回任何数据。我该如何解决?

时间:2019-02-02 22:11:10

标签: python beautifulsoup

我正在尝试使用python的beautifulsoup库进行自我开发,我意识到自己必须获得帮助。

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 :(得分:1)

您下载的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)

答案 1 :(得分:0)

您可以只使用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)