gpt4 book ai didi

python - 网页抓取 - Python;写入 CSV

转载 作者:行者123 更新时间:2023-11-30 22:06:32 24 4
gpt4 key购买 nike

我正在尝试从网站写入数据。当新的数据 block 在排名中列出时,数据以 HTML 格式的表格形式列出,标签“listing”表示排名中元素的每个描述性项目。该列表是前 500 台计算机的排名,列出 1-100 名,每个 1、2、3、4 等项用“”列出,计算机的每个特性用“”列出(存储、最大功率等) )。

这是我的代码:

# read the data from a URL
url = requests.get("https://www.top500.org/list/2018/06/")
url.status_code
url.content


# parse the URL using Beauriful Soup
soup = BeautifulSoup(url.content, 'html.parser')

filename = "computerRank10.csv"
f = open(filename,"w")

headers = "Rank, Site, System, Cores, RMax, RPeak, Power\n"
f.write(headers)

for record in soup.findAll('tr'):
# start building the record with an empty string
tbltxt = ""
tbltxt = tbltxt + data.text + ";"
tbltxt = tbltxt.replace('\n', ' ')
tbltxt = tbltxt.replace(',', '')
# f.write(tbltxt[0:-1] + '\n')
f.write(tbltxt + '\n')

f.close()

我什么也没得到,我的 CSV 文件始终为空

最佳答案

您应该使用 Python 标准库上的 csv 模块。

这是一个更简单的解决方案:

import requests
import csv
from bs4 import BeautifulSoup as bs

url = requests.get("https://www.top500.org/list/2018/06")
soup = bs(url.content, 'html.parser')

filename = "computerRank10.csv"
csv_writer = csv.writer(open(filename, 'w'))


for tr in soup.find_all("tr"):
data = []
# for headers ( entered only once - the first time - )
for th in tr.find_all("th"):
data.append(th.text)
if data:
print("Inserting headers : {}".format(','.join(data)))
csv_writer.writerow(data)
continue

for td in tr.find_all("td"):
if td.a:
data.append(td.a.text.strip())
else:
data.append(td.text.strip())
if data:
print("Inserting data: {}".format(','.join(data)))
csv_writer.writerow(data)

关于python - 网页抓取 - Python;写入 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52690994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com