删除Python中的重复URL(非列表)
我需要有关删除输出中重复URL的帮助。如果可能的话,我会尽量表达它,这样我就不必把所有的东西都列在一个列表中。我觉得这可以通过一些逻辑陈述来实现,只是不确定如何实现。使用Python3.6删除Python中的重复URL(非列表),python,python-3.x,loops,web-scraping,duplicates,Python,Python 3.x,Loops,Web Scraping,Duplicates,我需要有关删除输出中重复URL的帮助。如果可能的话,我会尽量表达它,这样我就不必把所有的东西都列在一个列表中。我觉得这可以通过一些逻辑陈述来实现,只是不确定如何实现。使用Python3.6 from urllib.request import urlopen as uReq from bs4 import BeautifulSoup as soup from urllib.parse import urljoin as join my_url = 'https://www.census.gov
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
from urllib.parse import urljoin as join
my_url = 'https://www.census.gov/programs-surveys/popest.html'
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
filename = "LinkScraping.csv"
f = open(filename, "w")
headers = "Web_Links\n"
f.write(headers)
links = page_soup.findAll('a')
for link in links:
web_links = link.get("href")
ab_url = join(my_url, web_links)
print(ab_url)
if ab_url:
f.write(str(ab_url) + "\n")
f.close()
如果不使用任何类型的数据结构,就无法实现这一点,除非您希望写入文件并反复读取(这远不如使用内存中的数据结构) 使用:
基于同样的想法,理解似乎更清晰:IMHO:
url\u set=set(链接中的链接使用join(my\u url,link.get(“href”))
然后您可以直接迭代。虽然顺序丢失。@mariusiuram True,但在将集合的内容写入文件时,您会丢失顺序。@DeepSpace完美解决方案。不确定为什么我不想使用列表/集合,但这正是需要做的。谢谢!
.
.
.
urls_set = set()
for link in links:
web_links = link.get("href")
ab_url = join(my_url, web_links)
print(ab_url)
if ab_url and ab_url not in urls_set:
f.write(str(ab_url) + "\n")
urls_set.add(ab_url)