没有刮掉整个页面

时间:2016-01-26 22:34:11

标签: python-3.x web-scraping beautifulsoup

代码在页面中循环,但并没有完全循环遍历整个页面,通常在比赛的第6或第7场比赛中停止。任何人都可以建议为什么BS在这里失败。这是网址http://www.gbgb.org.uk/resultsMeeting.aspx?id=135549

 from urllib import urlopen
 from bs4 import BeautifulSoup
 baseURL = 'http://www.gbgb.org.uk/resultsMeeting.aspx?id=135549'
 html = urlopen(baseURL)
 bsObj = BeautifulSoup(html, 'lxml')

 nameList = bsObj.findAll("div", {"class": "resultsBlockHeader"})
 for i in nameList:


 nameList1 = i.findAll("div", {"class": "track"})
 for j in nameList1:
     print(j.get_text())

 nameList1 = i.findAll("div", {"class": "date"})
 for j in nameList1:
     print(j.get_text())

 nameList1 = i.findAll("div", {"class": "datetime"})
 for j in nameList1:
     print(j.get_text())

 nameList1 = i.findAll("div", {"class": "grade"})
 for j in nameList1:
    print(j.get_text())

nameList1 = i.findAll("div", {"class": "distance"})
for j in nameList1:
    print(j.get_text())

nameList1 = i.findAll("div", {"class": "prizes"})
for j in nameList1:
    print(j.get_text())

nameList = bsObj.findAll("div", {"class": "resultsBlock"})
for i in nameList:

nameList2 = i.findAll("li", {"class": "trap"})
for j in nameList2:
    print(j.get_text())

nameList2 = i.findAll("li", {"class": "first essential fin"})
for j in nameList2:
    print(j.get_text())

nameList2 = i.findAll("li", {"class": "essential greyhound"})
for j in nameList2:
    print(j.get_text())

nameList2 = i.findAll("li", {"class": "sp"})
for j in nameList2:
    print(j.get_text())

nameList2 = i.findAll("li", {"class": "timeSec"})
for j in nameList2:
    print(j.get_text())

nameList2 = i.findAll("li", {"class": "timeDistance"})
for j in nameList2:
    print(j.get_text())

python web-scraping bs4

2 个答案:

答案 0 :(得分:0)

我无法按照描述使您的代码正常工作。但是,使用

from urllib.request import urlopen

在修复了一些缩进后,我能够正常运行其余的代码。请注意.request

当我使用浏览器时,我可以在网页上看到13个比赛结果,并且我使用您的BS代码获得13个比赛结果。

您的BS代码正在运行。所以我们只需要在调用BS之前查看任何问题。导致问题的唯一可能行是html = urlopen(baseURL)。也许你正在处理一些连接问题。

我猜你正在仔细检查网页上公开的内容,对吗?我怀疑比赛的数量会随着时间的推移而变化,因此获得6或7个结果可能就是全部。

答案 1 :(得分:0)

在修复了一些微小的缩进问题之后,代码对我有用。