gpt4 book ai didi

python - 需要帮助使用 lxml 和 xpath 抓取 NHL 统计表

转载 作者:行者123 更新时间:2023-11-30 22:44:11 24 4
gpt4 key购买 nike

我是Python新手(使用Python3.6),我学习它主要是为了能够为此页面构建一个抓取工具 http://www.nhl.com/stats/player?aggregate=0&gameType=2&report=skatersummary&pos=S&reportType=season&seasonFrom=20162017&seasonTo=20162017&filter=gamesPlayed,gte,1&sort=points,goals,assists

我尝试了很多东西,我最初想尝试使用 xpath 但失败后,我决定尝试使用 BeautifulSoup4 并且收到此错误

    for row in soup('table', {'class': 'stat-table'})[0].tbody('tr'):
IndexError: list index out of range

来自此代码

import urllib.request
from bs4 import BeautifulSoup

soup = BeautifulSoup(urllib.request.urlopen('http://www.nhl.com/stats/player?aggregate=0&gameType=2&report=skatersummary&pos=S&reportType=season&seasonFrom=20162017&seasonTo=20162017&filter=gamesPlayed,gte,1&sort=points,goals,assists'),"lxml")

for row in soup('table', {'class': 'stat-table'})[0].tbody('tr'):
tds = row('td')
print(tds[0].string, tds[1].string)

最佳答案

要使其正常工作,您必须找到向内部 API 发出请求的正确 URL。

要获取网址,您必须使用 google chrome 的网络控制台。

1)打开控制台并单击“网络”

enter image description here

2)然后刷新网站,您将看到该页面的所有请求。

enter image description here

3)然后你必须按“XHR”过滤,然后就可以了!

enter image description here

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests
import lxml.html
from pprint import pprint
from sys import exit
import json
import csv

url = 'http://www.nhl.com/stats/rest/grouped/skaters/basic/season/skatersummary?cayenneExp=seasonId=20162017 and gameTypeId=2&factCayenneExp=gamesPlayed>=1&sort=[{"property":"points","direction":"DESC"},{"property":"goals","direction":"DESC"},{"property":"assists","direction":"DESC"}]'
resp = requests.get(url).text
resp = json.loads(resp)

pprint(resp['data'])

关于python - 需要帮助使用 lxml 和 xpath 抓取 NHL 统计表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41603131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com