我已经删除了一个网站以获取HTML链接,并且有大约500个链接的结果。当我尝试将它们写入csv文件时,我不会仅将列表作为基页。
这是我的代码:
import requests
from bs4 import BeautifulSoup
import csv
page = requests.get('https://www.census.gov/programs-surveys/popest.html')
print(page.status_code)
soup = BeautifulSoup(page.text, 'html.parser')
link_set = set()
for link in soup.find_all('a'):
web_links = link.get("href")
print(web_links)
csvfile = open('code_python.csv', 'w+', newline='')
writer = csv.writer(csvfile)
writer.writerow(['Links'])
writer.writerow([web_links])
csvfile.close()
我的csv文件中只有两行。标题'链接'和www.census.gov。我尝试通过在csv编写器区域中添加另一个for循环来使其不同,但我得到了类似的结果。
for link in soup.find_all('a'):
web_links = link.get('href')
abs_url = join(page, web_links)
print(abs_url)
if abs_url and abs_url not in link_set:
writer.write(str(abs_url) + "\n")
link_set.add(abs_url)
似乎' web_links'定义应该是我把所有链接放入csv文件的地方,但没有骰子。我在哪里弄错了?
答案 0 :(得分:2)
在你的代码中,你在csv中写了两行,即
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in A
NameError: name 'A' is not defined
此处web_links是检索到的href值的最后一个实例。
我没有看到使用set实例。您可以在不使用set实例的情况下在csv中打印和写入:
writer.writerow(['Links'])
writer.writerow([web_links])
答案 1 :(得分:1)
您从未将废弃的链接添加到set()
:
import requests
from bs4 import BeautifulSoup
import csv
page = requests.get('https://www.census.gov/programs-surveys/popest.html')
print(page.status_code)
soup = BeautifulSoup(page.text, 'html.parser')
link_set = set()
for link in soup.find_all('a'):
web_links = link.get("href")
print(web_links)
link_set.add(web_links)
csvfile = open('code_python.csv', 'w+', newline='')
writer = csv.writer(csvfile)
writer.writerow(['Links'])
for link in link_set:
writer.writerow([link])
csvfile.close()