Python表格没有返回数据

时间:2018-03-26 15:58:34

标签: python web-scraping beautifulsoup

这看起来类似于我之前的帖子(我将在底部链接),但这是一个不同的网址,它使用表格。当我运行以下代码时,我可以获取所提取的所有数据:

import requests

from bs4 import BeautifulSoup

url = "https://www.nascar.com/wp-content/plugins/raw-feed/raw-feed.php"
r = requests.get(url)


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

try:
     data = soup.find('div', class_='div-col1')
     print(data)

except:
     print("You Get Nothing!")

然后我将尝试更改为

try:
     data = soup.find_all('td', class_='car')
     print(data)

except:
     print("You Get Nothing!")

我只是从thead而不是tbody

获取信息

我有什么遗失或做错了吗?我试图进一步确定,我要么出错,要么只返回空[]

此外,这个网页是动态的,我尝试了我之前的帖子Old Post给了我的东西,我理解两页之间的布局和编码是不同的,但我对此的关注是加载Chrome每次运行脚本都会很多,因为它可能需要每30秒-1分钟刷新300-400次。

2 个答案:

答案 0 :(得分:0)

为什么不直接使用源代码,如果您看到链接的页面源代码从https://www.nascar.com/live/feeds/live-feed.json获取数据,那么您可以轻松地获取json格式的数据并将其解析为你喜欢。

import requests
import json

url = "https://www.nascar.com/live/feeds/live-feed.json"
res = requests.get(url)
print(r.json())

答案 1 :(得分:0)

您希望从该页面获取的数据是动态生成的,因此当您使用requests库发出http请求时,它无法处理。但是,您可以尝试使用同一作者requests-html中的新库。它能够处理动态生成的内容。这就是你如何使用这个新库:

import requests_html

URL = "https://www.nascar.com/wp-content/plugins/raw-feed/raw-feed.php"

with requests_html.HTMLSession() as session:
    r = session.get(URL)
    r.html.render(sleep=5)
    for items in r.html.find('#pqrStatistic tr'):
        data = [item.text for item in items.find("th,td")]
        print(data)

部分结果:

['pos', 'car', 'driver', 'manuf', 'delta', 'laps', 'last lap', 'best time', 'best speed', 'best lap']
['1', '54', 'Kyle Benjamin(i)', '', '--', '161', '36.474', '20.198', '93.752', '8']
['2', '98', 'Grant Enfinger', '', '0.761', '161', '36.402', '20.144', '94.003', '157']
['3', '4', 'Todd Gilliland #', '', '1.407', '161', '36.359', '20.142', '94.013', '158']
['4', '8', 'John H. Nemechek(i)', '', '2.177', '161', '36.304', '20.234', '93.585', '31']
['5', '16', 'Brett Moffitt', '', '3.268', '161', '36.145', '20.359', '93.010', '8']