【发布时间】:2022-01-12 03:30:47
【问题描述】:
我正在尝试在此网站上抓取玩家的姓名和他们的评分: https://www.whoscored.com/Matches/1549539/LiveStatistics/England-Premier-League-2021-2022-Brentford-Arsenal.
抓取后,我将数据放入 csv 中。但是,它不会始终如一地刮擦。我可能必须多次运行脚本(2-5 次)才能让它抓取数据。当我尝试抓取其他匹配项时,也会发生这种情况。例如,如果我从 3 个匹配项中获取数据,它可能只会抓取第一个匹配项,而不会抓取其他页面的剩余数据。这是我的代码:
from bs4 import BeautifulSoup
from selenium import webdriver
match_link='https://www.whoscored.com/Matches/1549539/Live/England-Premier-League-2021-2022-Brentford-Arsenal.'
driver=webdriver.Chrome('C:\\Program Files (x86)\\chromedriver.exe')
driver.get(match_link)
soup=BeautifulSoup(driver.page_source,'html.parser')
Players_list=[]
Player_rating=[]
try:
player_name=soup.select('a.player-link span.iconize.iconize-icon-left')
player_rating=soup.select('td.rating')
#print('------------getting player name and ratings-----------')
for nme in player_name:
#print(nme.text)
Players_list.append(nme.text)
for rat in player_rating:
#print(rat.text)
Player_rating.append(rat.text)
except:
print('NO ELEMENT')
Players_list=pd.DataFrame(Players_list)
Player_rating=pd.DataFrame(Player_rating)
df=pd.concat([Players_list,Player_rating],axis=1)
df.to_csv('brentford-arsenal.csv')
它不会引发错误。它只返回一个空结果(意味着数据没有被抓取)。元素选择正确,但问题是脚本不一致。
Empty DataFrame
Columns: []
Index: []
【问题讨论】:
-
如果我点击该链接并检查页面,除非单击“播放器统计信息”选项卡,否则没有任何带有
player-link类的锚标记。在获取源代码之前,您必须使用网络驱动程序单击链接并等待选项卡加载。 -
哦,其实我去了这个链接:(whoscored.com/Matches/1549539/LiveStatistics/…
标签: python selenium web-scraping beautifulsoup