1

我正在做的项目要求我们输入一个 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)

我发现我的代码有两个问题。

我正在创建一个随着每次递归而扩展的列表,这使得很难找到正确的值。

其次,我显然退回了错误的物品。

我不知道如何解决这个问题。

4

0 回答 0