Python Can';t访问网页中表中的数据

Python Can';t访问网页中表中的数据,python,beautifulsoup,Python,Beautifulsoup,我试图从这个页面访问表中的内容,但是当我使用python中的beautiful soup进行访问时,我得到的是数据,但不是从某个俱乐部过滤器中选择的“全部”过滤器。我怎样才能实现我的目标 我需要访问与筛选器中的俱乐部对应的表中的所有数据。请帮帮我 请看下图 以及来自所有页面的数据: 我使用了以下代码 from bs4 import BeautifulSoup import urllib2 import lxml.html import xlwt import unicodedata info

我试图从这个页面访问表中的内容,但是当我使用python中的beautiful soup进行访问时,我得到的是数据,但不是从某个俱乐部过滤器中选择的“全部”过滤器。我怎样才能实现我的目标

我需要访问与筛选器中的俱乐部对应的表中的所有数据。请帮帮我

请看下图

以及来自所有页面的数据:

我使用了以下代码

from bs4 import BeautifulSoup
import urllib2
import lxml.html
import xlwt
import unicodedata
infoList = []

lLink = "http://www.afl.com.au/afl/stats/player-ratings/overall-standings#club/CD_T140"
header = {'User-Agent': 'Mozilla/5.0'}
req_for_players = urllib2.Request(lLink,headers=header)
page_for_players = urllib2.urlopen(req_for_players)
soup_for_players = BeautifulSoup(page_for_players)

table = soup_for_players.select('table.player-ratings')[0]
for group_header in table.select('tbody tr span'):
    player = group_header.string
    infoList.append(player)
print infoList

由此生成的列表
infoList
包含与“All”过滤器对应的数据。但是我需要根据我选择的过滤器来获取数据。

您不需要解析表-在单击paginator中的某个页面时,使用Firebug或任何类似工具来查看响应,您将看到它以JSON格式为您提供数据!纯赢

在这里可以看到JSON数据的URL格式:

http://www.afl.com.au/api/cfs/afl/playerRatings?roundId=CD_R201401411&pageSize=40&pageNum=2

通过这种方式,您甚至可以在不解析HTML的情况下获取第一页数据,也可以通过将一些高值设置为
pageSize
variable

来一次性获取所有数据。当页面第一次加载时,无论您选择了什么过滤器,表中的所有播放器都存在。该过滤器仅在不久之后调用。这就是为什么你会得到所有球员的数据

调用筛选器时,页面下方正在调用以下内容:

http://www.afl.com.au/api/cfs/afl/playerRatings?roundId=CD_R201401411&teamId=CD_T140&pageSize=40&pageNum=1
得到一个队的球员<代码>CD_T140是本例中的西部斗牛犬。您可以在
selLadderTeam
select元素中看到不同的可能值。但是,您不能简单地调用此url,因为您将得到一个401错误。查看发送的标题,有一个非常突出。似乎需要一个代币。因此,使用该库(它比urllib2更方便用户),您可以执行以下操作:

>>> import requests
>>> url = "http://www.afl.com.au/api/cfs/afl/playerRatings?roundId=CD_R201401411&teamId=CD_T40&pageSize=100"
>>> h = {'x-media-mis-token':'e61767b39a7680235476bb33aa946c0e'}
>>> r = requests.get(url, headers=h)
>>> r
<Response [200]>
>>> j = r.json()
>>> len(j['playerRatings'])
45
>>> j['playerRatings'][0]
{u'roundId': u'CD_R201401411', u'player': {u'playerId': u'CD_I260257', u'playerName': {u'givenName': u'Scott', u'surname': u'Pendlebury'}, u'captain': False, u'playerJumperNumber': None}, u'draftYear': u'2005', u'detailedRatings': [{u'trend': u'NO_CHANGE', u'ranking': 2, u'ratingType': u'OVERALL', u'ratingPoints': 674}, {u'trend': u'NO_CHANGE', u'ranking': 1, u'ratingType': u'TEAM', u'ratingPoints': 674}, {u'trend': u'NO_CHANGE', u'ranking': 2, u'ratingType': u'POSITION', u'ratingPoints': 674}], u'team': {u'teamId': u'CD_T40', u'teamName': u'Collingwood', u'teamAbbr': u'COLL', u'teamNickname': u'Magpies'}, u'position': u'MIDFIELDER'}
>>> j['playerRatings'][44]
{u'roundId': u'CD_R201401411', u'player': {u'playerId': u'CD_I295012', u'playerName': {u'givenName': u'Matt', u'surname': u'Scharenberg'}, u'captain': False, u'playerJumperNumber': None}, u'draftYear': u'2013', u'detailedRatings': [{u'trend': u'NO_CHANGE', u'ranking': 0, u'ratingType': u'OVERALL', u'ratingPoints': 0},{u'trend': u'NO_CHANGE', u'ranking': 0, u'ratingType': u'TEAM', u'ratingPoints': 0}, {u'trend': u'NO_CHANGE', u'ranking': 0, u'ratingType': u'POSITION', u'ratingPoints': 0}], u'team': {u'teamId': u'CD_T40', u'teamName': u'Collingwood', u'teamAbbr': u'COLL', u'teamNickname': u'Magpies'}, u'position': u'MEDIUM_DEFENDER'}
>>>
导入请求 >>>url=”http://www.afl.com.au/api/cfs/afl/playerRatings?roundId=CD_R201401411&teamId=CD_T40&pageSize=100" >>>h={'x-media-mis-token':'e61767b39a7680235476bb33aa946c0e'} >>>r=requests.get(url,headers=h) >>>r >>>j=r.json() >>>len(j['playerRatings']) 45 >>>j['playerRatings'][0] {u'roundId':u'CD_R201401411',u'playerId':u'CD_I260257',u'playerName':{u'givenName':u'Scott',u'姓氏':u'Pendlebury',u'captain':False,u'playerJumperNumber':无},u'draftYear':u'2005',u'detainings':[{u'trend':u'NO'CHANGE',u'ranking':2,u'ratingType':u'OVERALL',u'ratingPoints':674},{u'trend':u'NO'u CHANGE',u'ratingPoints':1,u'ratingType':u'TEAM',u'ratingPoints':674},{u'trend':u'NO'u CHANGE',u'ratingType':u'POSITION',u'ratingPoints':674,{u'teamId':u'CD'u T40',u'teamName':u'Collingwood',u'teamAbbr':u'COLL',u'TEAM昵称:u'mappies',u'POSITION u'medium':u'mediator u' >>>j[‘播放勘误表’][44] {u'roundId':u'CD_R201401411',u'playerId':u'CD_I295012',u'playerName':{u'givenName':u'Matt',u'姓氏':u'Scharenberg',u'captain':False,u'playerJumperNumber':无},u'draftYear':u'2013',u'detainings':[{u'trend':u'NO'CHANGE',u'ranking':0,u'ratingType':u'total',u'ratingPoints':0},{u'trend':u'NO'u CHANGE',u'ratingType':u'TEAM',u'ratingPoints':0},{u'trend':u'NO'u CHANGE',u'ranking':0,u'ratingType':u'POSITION',u'ratingPoints':0,u'teamId':u'CD'u T40',u'teamName':u'Collingwood',u'teamAbbr':u'COLL',u'TEAM昵称:u'mappies',u'POSITION u'MEDIUM'DEFENDER u' >>>
注意:我不知道roundID到底是什么。我将pageSize增加到可能会返回一个团队的所有玩家并删除pageNum。他们可以随时更改令牌。

如果您想要有用的答案,您需要显示一些代码。我已经添加了我使用的代码。。谢谢您的意思是什么?Chrome也有开发者Firefox有开发工具,Opera有Firefly或类似的东西。