【发布时间】:2014-03-04 18:04:19
【问题描述】:
我有一个要抓取的 URL 列表。
如果我单独使用每个 URL,我的代码在列表中有效;但是,当我将 URLS 存储在一个文件中并在循环中使用它时,它只会上升到第二个 URL 并停在第三个。
这是我的代码:
urls=open("file.txt")
url=urls.read()
main=url.split("\n")
url_number=0
while url_number<len(main):
page = requests.get(main[url_number])
tree = html.fromstring(page.text)
tournament = tree.xpath('//title/text()')
round1= tree.xpath('//div[@data-round]/span/text()')
scoreup= tree.xpath('//div[contains(@class, "top_score")]/text()')
scoredown= tree.xpath('//div[contains(@class, "bottom_score")]/text()')
url_number=url_number+1
print url_number
print "\n"
results = []
score_number=0
round_number=0
match_number=0
while round_number < len(round1):
match_number +=1
results.append(
[match_number,
round1[round_number],
scoreup[score_number],
round1[round_number+1],
scoredown[score_number],
tournament,])
round_number=round_number+2
score_number=score_number+1
print results
此代码为我提供了第二个 URL,并且只为第三个 URL 打印 3,即 url_number,后跟此错误。
scoredown[score_number],
IndexError: list index out of range
【问题讨论】:
-
您显示的错误清楚地表明问题出在
scoredown[score_number]行。显然,您的抓取逻辑不适用于该特定 URL。您应该手动检查该页面并调整您的逻辑。 -
但是当我直接在代码中使用该网址时,它可以正常工作
-
@bluenic 错误总是发生在第三个 URL 上,不管是哪个 URL,也不管总共有多少个?