Python/Gspread:删除空格和格式化数据的代码

问题描述 投票:0回答:1

我正在构建一个小工具来抓取 TTRPG 网站的数据并将数据写入谷歌表格。到目前为止,这是我的代码:

import requests
from bs4 import BeautifulSoup
import gspread

gc = gspread.service_account(filename='credentials.json')

sh = gc.open('D&D_Tables').sheet1

url = 'https://www.d20srd.org/srd/monsters/achaierai.htm'
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
# line below uses Beautiful Soup to locate table entries within HTML, returns all results as text
monster_stats_table = soup.find('table', class_='statBlock').text
# line below converts to dictionary, other program returns an error
new_mst =[monster_stats_table]
sh.append_row(new_mst) # currently appends all information to one cell, needs to be broken up

信息显示在一个单元格中,延伸到几十行,有很多额外的空白。我尝试了几种方法来删除空格并正确格式化数据,但似乎没有任何效果。 Showing Problem
我正在尝试让表格看起来像这样:Correct Table 感谢您提供的任何帮助或建议。 :)

我尝试使用 .strip 方法,以及导入 json 库和(单独)导入 ast 库以使用建议的函数来删除空格。由于原始数据的格式设置,两者都无法返回输出。我在想我需要找到一种方法将数据写入 json 对象,然后找到一种方法将其导入工作表,但我不确定这是最好的方法,或者如何做到这一点。

python google-sheets beautifulsoup gspread
1个回答
0
投票

我不使用 GSpread,但这里有一些东西可以让您更轻松地处理结构化数据,例如,您可以轻松地将其导入 GSpread 工作表。

import pandas as pd
import requests

url = "https://www.d20srd.org/srd/monsters/achaierai.htm"
df = pd.read_html(requests.get(url).content.decode("utf-8"), flavor="bs4")
pd.concat(df).to_csv("achaierai.csv", index=False, header=False)

这会输出一个

.csv
文件,如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.