我正在做的项目要求我们输入一个 url,然后在特定位置跟踪链接多次,然后返回最后访问的页面。我已经找到了一个while循环的解决方案,但现在我正试图用递归来做。示例: http: //py4e-data.dr-chuck.net/known_by_Fikret.html
在位置 3 处找到链接(名字是 1)。按照那个链接。重复此过程 4 次。答案是您检索的姓氏。
姓名序列:Fikret Montgomery Mhairade Butchi Anayah
姓氏按顺序排列:Anayah
到目前为止,我的代码是这样的:
from urllib.request import urlopen
from bs4 import BeautifulSoup
import ssl
import re
cnt = input("Enter count:")
post = input("Enter position:")
url = "http://py4e-data.dr-chuck.net/known_by_Fikret.html"
count = int(cnt)
position = int(post)
def GetLinks(initalPage, position, count):
html = urlopen(initalPage).read()
soup = BeautifulSoup(html, "html.parser")
temp = ""
links = list()
tags = soup('a')
for tag in tags:
x = tag.get('href', None)
links.append(x)
print(links[position - 1])
if count > 1:
GetLinks(links[position-1], position, count - 1)
return links[position - 1]
y = GetLinks(url, position, count)
print("****", y)
我发现我的代码有两个问题。
我正在创建一个随着每次递归而扩展的列表,这使得很难找到正确的值。
其次,我显然退回了错误的物品。
我不知道如何解决这个问题。