Python:我的代码只在一个输入上运行,并在其余时间给出索引错误
问题描述:
此代码的目的是:程序将使用urllib从以下数据文件中读取HTML,从中提取href = vaues定位标记扫描列表中名称相对于名字的特定位置的标记,然后按照该链接重复该过程并报告您找到的姓氏。开始于http://py4e-data.dr-chuck.net/known_by_Fikret.html。找到位置3的链接(名字是1)。关注该链接。重复这个过程4次。答案是您检索的姓氏。Python:我的代码只在一个输入上运行,并在其余时间给出索引错误
样品答案:
$ python solution.py
Enter URL: http://py4e-data.dr-chuck.net/known_by_Fikret.html
Enter count: 4
Enter position: 3
Retrieving: http://py4e-data.dr-chuck.net/known_by_Fikret.html
Retrieving: http://py4e-data.dr-chuck.net/known_by_Montgomery.html
Retrieving: http://py4e-data.dr-chuck.net/known_by_Mhairade.html
Retrieving: http://py4e-data.dr-chuck.net/known_by_Butchi.html
Retrieving: http://py4e-data.dr-chuck.net/known_by_Anayah.html
我的问题:我似乎只能使这个工作方案,并得到所需的输出,如果我在0进入4的数量和位置。如果位置大于0,那么我得到的错误:
Traceback (most recent call last):
File "ass12_2.py", line 21, in <module>
url= addurllist[pos]
IndexError: list index out of range
到目前为止我的代码是:
import urllib.request, urllib.parse, urllib.error
from bs4 import BeautifulSoup
urllist= list()
url= input("Enter URL: ")
count= int(input("Enter count: "))
pos= int(input("Enter position: "))
urllist.append(url)
iter= 0
while iter<= count:
html= urllib.request.urlopen(url).read()
soup= BeautifulSoup (html, "html.parser")
addurllist= list()
tags= soup("a")
for tag in tags:
tag= tag.get("href")
addurllist.append(tag)
url= addurllist[pos]
iter= iter+ 1
print (url)
答
我认为这是BEC应使用向左缩进一个url = addurlist[pos]
。你在追加第一个元素后立即调用它,因此对于超过0的任何索引它都将超出范围。
+0
不能相信我错过了我们。谢谢您的帮助! – Wannabe
你确定你的意思是'iter Shadow
东西告诉我你需要_unindent_这一行一级:'url = addurllist [pos]' –
@shadow ahh是我其实意味着iter
Wannabe