【发布时间】:2017-08-20 21:48:10
【问题描述】:
我从人口普查网站中提取 URL 列表,而不是将它们放在一组中以确保我不会出现重复,然后将该非重复 URL 列表导出到 .csv 文件中。但是,我的 set 继续返回重复值,这是不可能的。这是我的代码:
import bs4
from bs4 import BeautifulSoup
import requests
import csv
source_link = "https://www.census.gov/data/tables/2016/demo/popest/state-total.html"
s = requests.get(source_link)
usable_html = s.text
setupsoup = BeautifulSoup(usable_html, 'lxml')
silver = csv.writer(open("WGUCSV.csv", "r+"))
silver.writerow(["URL"])
for set(gold) in setupsoup.findAll('a', href=True):
gold.add['href']
print (gold)
silver.writerow(gold)
作为一个额外的问题,我还需要一种将生成的相对 URL 转换为绝对 URL 的方法,最好是 在 将它们排序到非重复列表中之前。我真的认为将它们全部添加到 set 会自行过滤掉重复项。
【问题讨论】:
-
for set(gold) in setupsoup.findAll('a', href=True):甚至不是有效的 Python。 -
您的意思是
for gold in set(setupsoup.findAll('a', href=True)): ...?或for gold in setupsoup.findAll('a', href=True): gold = set(gold) ... -
我的循环现在是:for gold in set(setupsoup.findAll('a', href=True)): gold.add['href'] 仍然以某种方式返回重复项。
标签: python python-3.x csv