使用Python 3.我试图从网站上提取所有独特的链接,似乎有代码工作,除了一些最后有/的链接。
例如:我的计划将包括http://www.google.com& http://www.google.com/
我想确保我的程序删除最后一个字符,以确保不会返回重复项。我研究过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)
答案 0 :(得分:1)
我保持简单,并明确说明您如何清理网址。例如,如果它是斜杠(rwindows
)或哈希值(/
),则删除最后一个字符(如果URL以哈希结尾,则它与它不相同以哈希结尾)。浏览数据后,我还会删除所有空白网址,因为这可能不是您正在寻找的内容。
#