Python获取下载PDF链接
时间: 2019-03-25来源:博客园
前景提要
Python获取下载PDF链接
-2 悬赏园豆: 200 [待解决问题] 网站产品页面: https://www.cn-abs.com/product.html#/detail/document
背景:这个网站需要注册登录,其中PDF文件需要付费下载,但是我有付费下载账号,可以手动下载文件

我已经实现的需求:可以模拟登录,把这些文件名,文件下载的链接打印出来
遇到的问题:我拿一个获取的PDF链接,去session.post请求该数据,下载下来的文件时打不开的,报文件错误,只有1KB,所以数据没有下载下来;同时我在Chrome里面复制手动下来时候留下的链接,浏览器打不开该链接,报以下错误:download file error:passcode is error,has no auth download this file
详细情况:
当点击下载按钮是,浏览器会发送一个请求,返回一个JSON,里面有我们的PDF链接,这里是已经获取到的,但是怎么请求这个链接,都不能把PDF下载下来

Python 爬虫 网页 theDataDigger | 初学一级 | 园豆: 6
提问于:2019-03-25 18:12 显示帮助
使用"Ctrl+Enter"可进行快捷提交,评论支持部分 Markdown 语法:[link](http://example.com) _italic_ **bold** `code`。
< > 分享
分享您的问题
所有回答(4) 0 可以改成用selenium。效率低很多就是。 codegay | 园豆:1786 (小虾三级) | 2019-03-25 18:39 效率太低,不考虑 支持( 0 ) 反对( 2 ) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 14:04 编辑文本 预览 上传图片
Ctrl+Enter键快速提交 2 直接请求pdf文件的链接,结果是什么?你这别人也没法测试,代码也不贴,也没法下载 会发光 | 园豆:266 (菜鸟二级) | 2019-03-26 09:28 结果说了,下载下来的PDF1KB,不能打开,PDF下载链接已经抓到了,代码很简单,就是个post请求,但是下载不下来。 支持( 0 ) 反对( 1 ) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 14:07 @theDataDigger: 所以你的问题到现在还没解决 支持( 0 ) 反对( 0 ) 会发光 | 园豆:266 (菜鸟二级) | 2019-03-26 14:11 @会发光: 对的 支持( 0 ) 反对( 0 ) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 14:12 @theDataDigger: 自己心里没点数么 支持( 0 ) 反对( 0 ) 会发光 | 园豆:266 (菜鸟二级) | 2019-03-26 14:14 @会发光:你看了我的问题就知道,即便把链接复制到浏览器上打开,是报没有权限打开的 ,但是通过点击产品可以下载文件,所以爬虫这块,浏览器都不能下载,模拟浏览器也就行不通了,我现在需要理解的是 服务器是怎么实现这一点的,一般来说,只要抓到了PDF链接,无论POST还是GET 都可以获取到数据 支持( 0 ) 反对( 0 ) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 14:14 @会发光: 什么意思 支持( 0 ) 反对( 0 ) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 14:15 @theDataDigger: 你的头部信息加的什么(session),复制到浏览器不能打开说明可能有referer限制,你是怕别人偷你代码还是怎么滴 支持( 0 ) 反对( 0 ) 会发光 | 园豆:266 (菜鸟二级) | 2019-03-26 14:17 @会发光: 我代码加了refer也没用 支持( 0 ) 反对( 0 ) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 16:32 @theDataDigger: 你自己试吧,什么都看不到讨论个p,祖传代码 支持( 0 ) 反对( 0 ) 会发光 | 园豆:266 (菜鸟二级) | 2019-03-26 16:36 @会发光: 主要是账号不能给你,代码如果给你的话,你运行也没用,这是个收费网站 支持( 0 ) 反对( 0 ) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 16:38 @theDataDigger: 贴代码,别人看到你哪里的设置是怎么样的,明白吗?空口说什么? 支持( 0 ) 反对( 0 ) 会发光 | 园豆:266 (菜鸟二级) | 2019-03-26 16:41 @会发光: 好吧,大概是这样的,我获取了session,然后用session.post(url)去请求下载 支持( 0 ) 反对( 0 ) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 16:43 编辑文本 预览 上传图片
Ctrl+Enter键快速提交 1 我试了一下,由于我的账号不能下载,点击的请求似乎也就是一个简单的post。如果你点击能下载下来,但是代码下载不下来。可能性无非是链接没找对,或者信息给错了。你可以先确认一下,你登录过session里面有没有这个cookie里面的所有信息。
另,你暴露了密码 test_2018。 Masako | 园豆:1751 (小虾三级) | 2019-03-26 16:19 是因为Cookie暴露了密码吗 支持( 0 ) 反对( 0 ) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 16:27 我的密码并不是test_2018啊 支持( 0 ) 反对( 0 ) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 16:30 Cookie: CNABS_PassCode=test_2018; cnabs=zzzzzzzzzzzzzzzzzzz 支持( 0 ) 反对( 0 ) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 16:30 @theDataDigger: 恩?我的CNABS_PassCode和我的密码一样,我搞错了吗? 支持( 0 ) 反对( 0 ) Masako | 园豆:1751 (小虾三级) | 2019-03-26 16:33 @Masako: 你真的吓死我了,密码泄露很恐怖了,这个账号公司几万钱买的 支持( 0 ) 反对( 0 ) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 16:41 @theDataDigger: 这么贵啊。哈哈,冷静一点。我试了一下,请求没什么问题,主要就是根据这个Cookie来判断用户的,而且cookie好像没多久就过期了,你直接复制一下网页上的cookie放在headers里面,然后请求下载试试呢。 支持( 0 ) 反对( 0 ) Masako | 园豆:1751 (小虾三级) | 2019-03-26 16:46 @Masako: 我把请求头的数据都搞上去了,也没用 支持( 0 ) 反对( 0 ) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 16:47 @theDataDigger: 那就不清楚了。可以再仔细看看下载请求流程,祝好运~ 支持( 0 ) 反对( 0 ) Masako | 园豆:1751 (小虾三级) | 2019-03-26 16:59 编辑文本 预览 上传图片
Ctrl+Enter键快速提交 0 应该是身份验证有问题,你先把下载下来的1kb内容打开看看是什么 ChnMig | 园豆:221 (菜鸟二级) | 2019-03-29 17:20 编辑文本 预览 上传图片
Ctrl+Enter键快速提交
清除回答草稿
您需要 登录 以后才能回答,未注册用户请先 注册 。

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行