python - 通过 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 错误,所以我想我的方法还很遥远。
热烈感谢任何帮助。
解决方案
问题:
您将从站点检索到的所有内容设置为小写。驱动器链接基于相应的文件 id,区分大小写,因此您尝试访问的链接无效。因此,您得到 404。
解决方案:
向 发出 get 请求时site
,请勿将响应设置为小写。改变这个:
requests.get(site).text.lower()
对此:
requests.get(site).text
推荐阅读
- python - 如何用opencv正确叠加两个图像
- r - 使用 set.seed 命令的不同样本结果?
- java - 是否有 INDArray 的方法来执行两个 INDArray(具有不同大小)的相加?
- database - 在 node-oracledb 中使用事务
- c# - 无法从 c# 代码调用类模板的非虚拟函数
- ruby-on-rails - form_for 'file_field' 未显示在编辑操作中选择的文件
- javascript - Element 的 Microsoft Edge 实例返回的结果与 chrome/firefox 不同
- java - 如何修复 RecylerView 布局中按钮的位置?我不希望按钮与 RecyclerView 中的图像一起滚动
- r - 带有插入符号的决策树中属性使用的奇怪结果
- go - syscall.Entersyscall 的实现在哪里?