我试图让跑步者'来自此网页的数据:http://results.nyrr.org/event/M2016/finishers。我知道使用requests.get
或requests.post
的简单方法不适用于此,所以我尝试使用selenium和webdriver。我写了以下代码:
browser = webdriver.Chrome()
browser.get('http://results.nyrr.org/event/M2016/finishers')
html = browser.page_source
soup = BeautifulSoup(html, "lxml")
table = soup.find("div", attrs={"ng-show": "eventFinishers.length > 0"})
table2 = table.findAll("div", {"class": "cmd-finisher ng-scope", "ng-repeat": "eventFinisher in eventFinishers"})
问题是我没有获得与网络上提供的完全相同的信息,而且我可以在Chrome开发者工具中看到这些信息。 例如,对于第一个跑步者,我不会在性别组织中获得这个位置。它应该说1,但我认为它是空的。但是,我得到了名字" Gender Place"。年龄组,整体枪支,团队和其他信息也是如此:
>>> print(table2[0].text)
Ghirmay Ghebreslassie
M20
ERI
Place: 1
Pace: 04:53
Bib: 2
View Runner's Page
Expand Results
Expand
2:07:51
2:07:51
Gender/Age:M20
Team:
Official Time
2:07:51
Pace Per Mile
04:53
Overall Place
1
Gender Place
Age-Group Place
Overall Gun Place
Age-Graded Time
Age-Graded Place
Age-Graded %
NaN%
View in Graph
Go To Runner's Page
Compare this runner
Request Corrections
Close
Created with Highcharts 4.2.1Chart titleHighcharts.com
Go back to detail view
此外,使用此代码我无法以" 5K split"," 10k split" ...
的名义获取信息我已检查此信息不在html = browser.page_source
中,因此问题可能是webdriver未正确加载网页。是否有可能使用selenium-webdriver获取我想要的信息?
我怎么解决这个问题?如果不可能,我还有其他选择吗? (我使用的是python 3)