这段代码的目的是:程序将使用 urllib 从下面的数据文件中读取 HTML,从锚标签中提取 href= vaues,扫描相对于列表中第一个名称的特定位置的标签,点击该链接并多次重复该过程并报告您找到的姓氏。从http://py4e-data.dr-chuck.net/known_by_Fikret.html开始。在位置 3 处找到链接(名字是 1)。按照那个链接。重复此过程 4 次。答案是您检索的姓氏。
示例答案:
$ 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
我的问题:我似乎只能使这个程序工作并获得所需的输出,如果我输入 4 的计数和 0 的位置。如果位置大于 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)