我正试图从网站上搜索关于top14橄榄球运动员的信息(得分,铲球,时间,位置等等)。 对于每个玩家,我从此页面获取信息: http://www.lnr.fr/rugby-top-14/joueurs/nicholas-abendanon 对于每个球员,我可以轻松获得2015-2016赛季的信息,但我也需要2014-2015赛季的信息。
问题是,当我打开相应的链接(http://www.lnr.fr/rugby-top-14/joueurs/nicholas-abendanon#season=14535)时,源代码是相同的,而我的程序废弃的信息是2015-2016数据。 即使它出现在网页上,我似乎无法找到获取前几季信息的方法。 谁知道如何解决这个问题?
以下是我给出的播放器代码示例。
import bs4
from lxml import html
import requests
import string
import _pickle as pickle
from bs4 import BeautifulSoup
dic={}
url_player='http://www.lnr.fr/rugby-top-14/joueurs/nicholas-abendanon'
page = requests.get(url_player)
html=page.content
parsed_html = BeautifulSoup(html)
body=parsed_html.body
saison14_15=body.find('a',attrs={'data-title':'Saison 2014-2015'})
link=saison14_15['href']
url_season='http://www.lnr.fr/rugby-top-14/joueurs/nicholas-abendanon'+link
page_season = requests.get(url_season)
html_season=page_season.content
parsed_html_season = BeautifulSoup(html_season)
body_season=parsed_html_season.body
dic['nom']=body_season.find('h1',attrs={'id':'page-title'}).text
dic[body_season.find('span',attrs= {'class':'title'}).text]=body_season.find('span',attrs={'class':'text'}).text
info1=body_season.find('ul',attrs={'class':'infos-list small-bold'})
try:
for item in info1.findAll('li'):
dic[item.find('span',attrs={'class':'title'}).text]=item.find('span',attrs={'class':'text'}).text
info2=body_season.find('ul',attrs={'class':'fluid-block-grid-3 team-stats'})
if info2 is not None :
for item in info2.findAll('li'):
dic[item.find('span',attrs={'class':'title'}).text]=item.find('span',attrs={'class':'text'}).text
info3=body_season.find('ul',attrs={'class':'number-list small-block-grid-2'})
if info3 is not None :
for item in info3.findAll('li'):
dic[item.find('span',attrs={'class':'title'}).text]=item.find('span',attrs={'class':'text'}).text
except:
dic=dic`
答案 0 :(得分:0)
当您选择2014-2015季节时,该页面会向
发出AJAX请求http://www.lnr.fr/ajax_player_stats_detail?player=33249&compet_type=1&=undefined&season=14535&_filter_current_tab_id=panel-filter-season&ajax-target-selector=%23player_stats_detail_block
如果您切换回2015-2016,它会向
发出AJAX请求http://www.lnr.fr/ajax_player_stats_detail?player=33249&compet_type=1&=undefined&season=18505&_filter_current_tab_id=panel-filter-season&ajax-target-selector=%23player_stats_detail_block
每个请求都会返回一个插入页面的HTML块。
如果你能找出player
和season
所需的参数,我建议你直接请求数据(根本不加载父页面)。