繁体   English   中英

通过Beautifulsoup将URL垂直写入csv文件

[英]Writing URLs via Beautifulsoup to a csv file vertically

我有一个针对我大学课程之一的项目,该项目要求我从美国人口普查局网站上的页面中提取所有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)

尝试通过将URL附加到列表中来创建列表列表

links.append([link.get('href')])

然后,csv编写器会将每个列表放在带有writerows的新行中

writer.writerows(links)

尝试这个:

import requests
import csv
from bs4 import BeautifulSoup
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)
    for link in links:
        if (isinstance(link, str)):
            f.write(link + "\n",)

我将其更改为检查给定链接是否确实是字符串,如果是,则在其后添加换行符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM