使用Python3写入CSV文件的删除链接

时间:2017-11-19 01:48:27

标签: python python-3.x csv beautifulsoup

我已经删除了一个网站以获取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文件的地方,但没有骰子。我在哪里弄错了?

2 个答案:

答案 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()