【发布时间】:2012-12-17 12:28:15
【问题描述】:
我正在尝试从http://www.basketball-reference.com/boxscores/201112250DAL.html 中获取一支球队在常规赛中的所有比赛数据。我让所有其他数据农业功能正常工作,我遇到的问题是循环刮板。 这是我用来获取下一页 URL 的测试代码。我可以使用它来获取一支球队在常规赛期间打过的所有 66 场比赛的数据,但是要通过这种方式进行大量输入。实现自动化的最简单解决方案是什么?
谢谢!
URL = "http://www.basketball-reference.com/boxscores/201112250DAL.html"
html = urlopen(URL).read()
soup = BeautifulSoup(html)
def getLink(html, soup):
links = soup.findAll('a', attrs={'class': 'bold_text'})
if len(links) == 2:
a = links[0]
a = str(a)
a = a[37:51]
return a
if len(links) == 3:
a = links[1]
a = str(a)
a = a[37:51]
return a
if len(links) == 4:
a = links[3]
a = str(a)
a = a[37:51]
return a
print getLink(html, soup)
URL1 = "http://www.basketball-reference.com/boxscores" + getLink(html, soup) + "html"
print URL1
html1 = urlopen(URL1).read()
soup1 = BeautifulSoup(html1)
print getLink(html1, soup1)
【问题讨论】:
-
如果您只是想计算出 URL,那么直接抓取 basketball-reference.com/teams/DAL/2012_games.html 并从字面上删除看起来像 "/boxscores/*.html" 的字符串会更容易吗?这将为您带来 66 场常规比赛和季后赛......
-
这只是一个测试,通过 URL,主代码中有函数,可以从每个游戏中获取我感兴趣的统计信息。我只是想知道如何使这个过程尽可能快。
-
我正在考虑使用 /DAL/2012_games.html 页面作为您的索引?您可以检索一次,然后轻松获取所需的 66 个 URL 并将其粘贴在列表中,然后将其输入。有点绕过页面的整个抓取以获取正确的“下一个游戏”链接(因为我没有看到任何匹配的简单模式)
标签: python loops web-scraping beautifulsoup