代码在页面中循环,但并没有完全循环遍历整个页面,通常在比赛的第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
答案 0 :(得分:0)
我无法按照描述使您的代码正常工作。但是,使用
from urllib.request import urlopen
在修复了一些缩进后,我能够正常运行其余的代码。请注意.request
。
当我使用浏览器时,我可以在网页上看到13个比赛结果,并且我使用您的BS代码获得13个比赛结果。
您的BS代码正在运行。所以我们只需要在调用BS之前查看任何问题。导致问题的唯一可能行是html = urlopen(baseURL)
。也许你正在处理一些连接问题。
我猜你正在仔细检查网页上公开的内容,对吗?我怀疑比赛的数量会随着时间的推移而变化,因此获得6或7个结果可能就是全部。
答案 1 :(得分:0)
在修复了一些微小的缩进问题之后,代码对我有用。