首页 > 解决方案 > 通过 Python 请求从 Google Drives 下载数据

问题描述

我无法从通过谷歌驱动器存储的网站访问 .pdf 数据。

该网站可以在这里找到。

源代码显示我所追求的链接很容易识别......

<ul style="margin-left: 40px;">
<li><a href="https://drive.google.com/open?id=11Zw72KDm4cdfswuCjbeM2c3sM6kdcowE" target="_blank">January 4, 6-9, 2020</a></li>
<li><a href="https://drive.google.com/a/agfc.ar.gov/file/d/1OtSZtBxaNWGqlDvBp-cG7TAwOHjYacm_/view?usp=sharing" target="_blank">December 12-20, 2019</a></li>
<li><a href="https://drive.google.com/open?id=1HPa1REOTy_Kz9wxLUpT4N57KEurE8Z9f" target="_blank">November 16-19, 2019</a></li>
<li><a href="https://drive.google.com/open?id=1iCBknPwIxirmWeiD7VPKxwCYvgQUkOB-" target="_blank">January 20-23, 2019</a></li>

...与我所追求的超链接之间的a href="所有内容。" target="_blank"

我尝试使用 requests.get() 来解决它...

site = 'site goes here'

url_locs = []

url_locs = BeautifulSoup(requests.get(site).text.lower(), 'html.parser').findAll('ul', {'style': 'margin-left: 40px;'})

# Locate the url for the pdf
report_urls = re.findall('<li><a href="(.*?)" target="', str(url_locs))
#print (report_urls)

# Download and save the individual pdfs, then record the filepath to add to the INDEX
for url in report_urls:
    r = requests.get(url)
    print(r)

...但输出<Response [404]>适用于所有人。

在 API 中进行一些挖掘,并寻找以前类似问题的答案,例如这个这个我可以告诉我缺少一个步骤,或者整个方法可能已经关闭,但我不太确定该去哪里从这里。

任何访问该站点的人都可以访问谷歌驱动器,所以我不知道身份验证信息是什么,也没有提到“驱动程序”。

只需将源代码中的链接复制并粘贴到我的浏览器中就会返回 404 错误,所以我想我的方法还很遥远。

热烈感谢任何帮助。

标签: pythonpython-requestsgoogle-drive-api

解决方案


问题:

您将从站点检索到的所有内容设置为小写。驱动器链接基于相应的文件 id,区分大小写,因此您尝试访问的链接无效。因此,您得到 404。

解决方案:

向 发出 get 请求时site,请勿将响应设置为小写。改变这个:

requests.get(site).text.lower()

对此:

requests.get(site).text

推荐阅读