【发布时间】:2019-12-07 23:29:20
【问题描述】:
我正在使用下面的代码:
import requests
from bs4 import BeautifulSoup
def recursiveUrl(url, link, depth):
if depth == 5:
return url
else:
print(link['href'])
page = requests.get(url + link['href'])
soup = BeautifulSoup(page.text, 'html.parser')
newlink = soup.find('a')
if len(newlink) == 0:
return link
else:
return link, recursiveUrl(url, newlink, depth + 1)
def getLinks(url):
page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
links = soup.find_all('a')
for link in links:
links.append(recursiveUrl(url, link, 0))
return links
links = getLinks("https://www.rogerebert.com/reviews/")
def unique(links):
uniqueValues = {}
for i in links:
uniqueValues.add(i)
for i in uniqueValues:
print(i)
unique(links)
我尝试了多种方法来尝试仅打印唯一条目,但我的输出是一个长列表,如下所示,理想情况下,我应该只打印每个唯一条目:
再次感谢大家的帮助。
【问题讨论】:
-
我会假设链接并不完全相同,这是唯一的解释。顺便说一句,您还可以将列表转换为只能包含唯一项目的集合。
-
我使用您使用的方法快速编写并运行了一个非常相似的 Python 程序,它确实运行得非常好。您是否验证过链接完全相同,就像@sammy 建议的那样?
-
无法用
[1, 1, 2]之类的列表重现问题。你需要创建一个minimal reproducible example。 -
您需要向我们提供Minimal Reproducible example。只需给我们一个包含 10 个 URL 的静态列表。如果您只向我们显示 BeautifulSoup 代码的 URL,则无法重现。在 SO 上,您需要为您的问题提供 MCVE。