【发布时间】:2020-01-12 13:49:20
【问题描述】:
我的一个大学课程项目要求我从美国人口普查局网站上的一个页面中提取所有 URL,并将它们存储在 CSV 文件中。在大多数情况下,我已经想出了如何做到这一点,但由于某种原因,当数据被附加到 CSV 文件时,所有条目都被水平插入。我希望数据垂直排列,这意味着第 1 行包含列表中的第一项,第 2 行包含第二项,依此类推。我尝试了几种方法,但数据总是以水平表示形式结束。我是 python 新手,显然对语言没有足够的把握来解决这个问题。任何帮助将不胜感激。
我正在使用 Beautifulsoup4 和请求库解析网站。从网站中提取所有的“a”标签非常容易,并且将这些“a”标签中的 URL 放入列表中也很清楚。但是,当我使用 writerow 函数将列表附加到我的 CSV 文件时,所有数据都以一行结束,而不是每个 URL 单独一行。
import requests
import csv
requests.get
from bs4 import BeautifulSoup
from pprint import pprint
page = requests.get('https://www.census.gov/programs-surveys/popest.html')
soup = BeautifulSoup(page.text, 'html.parser')
## Create Link to append web data to
links = []
# Pull text from all instances of <a> tag within BodyText div
AllLinks = soup.find_all('a')
for link in AllLinks:
links.append(link.get('href'))
with open("htmlTable.csv", "w") as f:
writer = csv.writer(f)
writer.writerow(links)
pprint(links)
【问题讨论】:
-
请添加您的导入以使其成为一个完整的示例
标签: python csv beautifulsoup