Python3删除带有额外字符rstrip的重复Web链接
使用Python3。我正在尝试从一个网站中提取所有独特的链接,除了少数在末尾有/的链接外,代码似乎正常工作 例如:我的程序将包括& 我想确保我的程序删除最后一个字符,以确保不会返回重复的字符。我已经研究了Python3删除带有额外字符rstrip的重复Web链接,python,python-3.x,web-scraping,Python,Python 3.x,Web Scraping,使用Python3。我正在尝试从一个网站中提取所有独特的链接,除了少数在末尾有/的链接外,代码似乎正常工作 例如:我的程序将包括& 我想确保我的程序删除最后一个字符,以确保不会返回重复的字符。我已经研究了rstrip(),但似乎无法让它工作。这是我的代码: import bs4 as bs import urllib.request import urllib.parse source = urllib.request.urlopen('https://www.census.gov/data
rstrip()
,但似乎无法让它工作。这是我的代码:
import bs4 as bs
import urllib.request
import urllib.parse
source = urllib.request.urlopen('https://www.census.gov/data/tables/2016/demo/popest/state-total.html').read()
soup = bs.BeautifulSoup(source,'lxml')
filename = "UniqueWebLinks.csv"
f = open(filename, "w")
headers = "WebLinks\n"
f.write(headers)
all_links = soup.find_all('a')
url_set = set()
for link in all_links:
web_links = link.get("href")
ab_url = urllib.parse.urljoin('https://www.census.gov/data/tables/2016/demo/popest/state-total.html', web_links)
print (ab_url)
if ab_url and ab_url not in url_set:
f.write(str(ab_url) + "\n")
url_set.add(ab_url)
我会保持简单,并且非常明确地说明如何清理URL。例如,如果最后一个字符是斜杠(
/
)或散列(#
)(如果URL以散列结尾,则与未以散列结尾的URL相同),则去掉最后一个字符。浏览完数据后,我还会删除所有空白URL,因为这可能不是您要查找的内容
BASE_URL = 'https://www.census.gov/data/tables/2016/demo/popest/state-total.html'
all_links = soup.find_all('a')
def clean_links(tags, base_url):
cleaned_links = set()
for tag in tags:
link = tag.get('href')
if link is None:
continue
if link.endswith('/') or link.endswith('#'):
link = link[-1]
full_url = urllib.parse.urljoin(base_url, link)
cleaned_links.add(full_url)
return cleaned_links
cleaned_links = clean_links(all_links, BASE_URL)
for link in cleaned_links:
f.write(str(link) + '\n')
这不是对你问题的回答,但census.gov有一系列的API可以从中获取数据,而无需删除网站上的任何内容。也许API中没有您要查找的内容,但我肯定要先看看: