这对我来说相对棘手。我正在尝试提取来自 python 中的 google 工作表的嵌入表。
这是 链接
我不拥有该工作表,但它是公开可用的。
这是迄今为止我的代码,当我输出标题时,它向我显示“”。任何帮助将不胜感激。最终目标是将此表转换为 pandas DF。多谢你们
import lxml.html as lh
import pandas as pd
url = 'https://docs.google.com/spreadsheets/u/0/d/e/2PACX-1vQ--HR_GTaiv2dxaVwIwWYzY2fXTSJJN0dugyQe_QJnZEpKm7bu5o7eh6javLIk2zj0qtnvjJPOyvu2/pubhtml/sheet?headers=false&gid=1503072727'
page = requests.get(url)
doc = lh.fromstring(page.content)
tr_elements = doc.xpath('//tr')
col = []
i = 0
for t in tr_elements[0]:
i +=1
name = t.text_content()
print('%d:"%s"'%(i,name))
col.append((name,[]))
你可以使用 Google Sheets API v4 来实现。以下是如何操作的 Python 代码:
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import pandas as pd
# Google Sheets API 的范围
scope = ['https://www.googleapis.com/auth/spreadsheets.readonly']
# 你的凭据文件的路径
creds_path = 'path/to/your/credentials.json'
# 使用你的凭据文件
credentials = ServiceAccountCredentials.from_json_keyfile_name(creds_path, scope)
client = gspread.authorize(credentials)
# Google Sheet 的 URL
spreadsheet_url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vQ--HR_GTaiv2dxaVwIwWYzY2fXTSJJN0dugyQe_QJnZEpKm7bu5o7eh6javLIk2zj0qtnvjJPOyvu2/pubhtml'
# 从 URL 中提取 Spreadsheet ID
spreadsheet_id = spreadsheet_url.split('/d/')[1].split('/')[0]
# 打开 Google Sheet
sheet = client.open_by_key(spreadsheet_id).sheet1
# 将数据获取为列表列表
data = sheet.get_all_values()
# 创建 pandas DataFrame
df = pd.DataFrame(data)
# 将第一行设置为标题
df.columns = df.iloc[0]
df = df[1:]
# 打印 DataFrame
print(df)
说明:
-
安装必要的库:
bash pip install gspread oauth2client pandas
-
启用 Google Sheets API 并下载凭据:
- 请访问 Google Cloud Console 。
- 创建一个新的项目或选择一个现有项目。
- 在导航菜单中,转到“API 和服务”>“信息库”,并搜索“Google Sheets API”。
- 点击“Google Sheets API”,然后点击“启用”。
-
创建服务帐户凭据并下载 JSON 文件。将此文件的路径放在
creds_path
变量中。 -
将 Google Sheet URL 和凭据文件的路径粘贴到代码中。
-
运行代码。 这将使用 Google Sheets API 获取数据,创建一个 pandas DataFrame,并将其打印到控制台。
现在,你应该能够在
df
变量中使用 pandas DataFrame 了。