Python得到了一个独特的lis

2024-05-19 12:25:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用以下代码:

 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)

我尝试了多种方法只打印唯一的条目,但我的输出是一个长长的列表,如下面所示,理想情况下,我应该只打印每个唯一的条目:

再次感谢你的帮助。你知道吗


Tags: inurlforreturndefpagelinklinks
2条回答

尝试使用集合而不是使用列表。这样你就不会有同一个网站的多个实例。你知道吗

uniqueValues = {}
for i in links:
    uniqueValues.add(i)

for i in uniqueValues: 
    print(i)

将代码uniqueValues.add(i)设置为dict时出错 以前和dict没有添加!你知道吗

import requests
from bs4 import BeautifulSoup

r = requests.get('https://www.rogerebert.com/reviews/')
soup = BeautifulSoup(r.text, 'html.parser')

links = set()
for item in soup.findAll('a'):
    item = item.get('href')
    links.add(item)

for item in links:
    print(item)

相关问题 更多 >