首页 > 编程问答 >在 Python 中从 HTML 中抓取嵌入的 Google Sheet

在 Python 中从 HTML 中抓取嵌入的 Google Sheet

时间:2024-08-04 16:24:04浏览次数:14  
标签:python google-sheets web-scraping

这对我来说相对棘手。我正在尝试提取来自 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)

说明:

  1. 安装必要的库: bash pip install gspread oauth2client pandas

  2. 启用 Google Sheets API 并下载凭据:

  3. 请访问 Google Cloud Console
  4. 创建一个新的项目或选择一个现有项目。
  5. 在导航菜单中,转到“API 和服务”>“信息库”,并搜索“Google Sheets API”。
  6. 点击“Google Sheets API”,然后点击“启用”。
  7. 创建服务帐户凭据并下载 JSON 文件。将此文件的路径放在 creds_path 变量中。

  8. 将 Google Sheet URL 和凭据文件的路径粘贴到代码中。

  9. 运行代码。 这将使用 Google Sheets API 获取数据,创建一个 pandas DataFrame,并将其打印到控制台。

现在,你应该能够在 df 变量中使用 pandas DataFrame 了。

标签:python,google-sheets,web-scraping
From: 60194993

相关文章

  • 如何使用 Python 在 Google 或 DuckDuckGo 中快速获取答案
    我有一个人工智能助手项目,我希望它在互联网上搜索。我想使用适用于Python的GoogleQuickAnswerBox或DuckDuckGoInstantAnswerAPI。我看到了其他问题,但它们对我没有多大帮助。这是我想要实现的一个示例:问题:什么是长颈鹿?Google的答案:DuckDuckGo的......
  • 如何为可以在递归调用中重新分配的 python 函数制定类型提示?
    采取以下最小示例:S=TypeVar("S",bound=int|str)defmeth(a:S)->S:ifa=="5":returnstr(meth(int(a)))returna特别是,上面的方法可以采用字符串或整数。它总是返回与其输入相同类型的值,但它可以递归地调用自身,在这种情况下,S的值......
  • 使用 python 和 json 抓取该网站的正确 URL 是什么?
    试图抓取这个网站-->https://ucr.gov/enforcement/1000511它曾经使用下面的代码,然后停止了。无法获取响应中的json或任何内容。query="1000511"url='https://ucr.gov/api/enforcement/{}'.format(query)headers={'User-Agent':'Mozilla/5.0(......
  • Python逆向
    参考链接:https://www.bilibili.com/video/BV1JL4y1p7Tt/?spm_id_from=333.999.0.0https://bbs.kanxue.com/thread-282542.htmhttps://blog.csdn.net/weixin_35967330/article/details/114390031?spm=1001.2014.3001.5501https://0xd13a.github.io/ctfs/0ctf2017/py/前言:py......
  • Python中使用正则表达式
    摘要:正则表达式,又称为规则表达式,它不是某种编程语言所特有的,而是计算机科学的一个概念,通常被用来检索和替换某些规则的文本。一.正则表达式的语法①行定位符行定位符就是用来描述字符串的边界。"^"表示行的开始,"$"表示行的结束。^tm  #tmequalTomorrowMoon可以......
  • 如何在python中使用xarray打开grib2文件?
    将xarray导入为xr导入cfgrib导入生态码将pandas导入为pddata=xr.open_dataset(r"C:\Users\new\forecast_data.grib2",engine="cfgrib")这是我的代码。我只想使用xarray读取这个文件。错误是:无法识别的引擎cfgrib必须是以下之一:['netcdf4'、'scipy'、'......
  • 如何在 java 或 python 中使用 HTTP(S) 解决无法解析的主机名或无法识别的名称错误?
    我尝试以编程方式访问网站的信息,但在Java和Python上都无法解析主机名。如果我指定IP地址,则会将错误更改为TLSV1_UNRECOGNIZED_NAME。不过,这个网站无需任何额外的工作就可以通过任何浏览器解决。我在这里浏览了很多潜在的解决方案,但对于Python,它说这个问题应该在2.7......
  • Python 请求 POST 请求与 websockets 库一起使用时挂起
    我使用Python中的requests库发送POST请求,同时维护与websockets库的WebSocket连接:importasyncioimportrequestsimportwebsocketsasyncdefwebsocket_handler(uri):asyncwithwebsockets.connect(uri)aswebsocket:whileTrue:me......
  • 在Python中,list1[::] = list2的空间复杂度是多少?
    此代码首先迭代列表nums,更新整数0、1、2(也分别称为红色、白色和蓝色)的计数。nums保证只有整数0、1和/或2。找到计数后,代码使用[::],这是一种就地修改列表的技巧,以排序numsdefsortColors(self,nums:List[int])->None:re......
  • [附开题]flask框架高校资产管理系统d8y3s(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育事业的快速发展,高校资产规模日益庞大,种类繁多,管理难度显著增加。传统的资产管理方式往往依赖于手工记录和纸质档案,不仅效率低......