首页 新闻 会员 周边

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下载下来

theDataDigger的主页 theDataDigger | 初学一级 | 园豆:6
提问于:2019-03-25 18:12
< >
分享
所有回答(4)
0

可以改成用selenium。效率低很多就是。

墨镜带佬星 | 园豆:2294 (老鸟四级) | 2019-03-25 18:39

效率太低,不考虑

支持(0) 反对(2) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 14:04
2

直接请求pdf文件的链接,结果是什么?你这别人也没法测试,代码也不贴,也没法下载

会发光 | 园豆:258 (菜鸟二级) | 2019-03-26 09:28

结果说了,下载下来的PDF1KB,不能打开,PDF下载链接已经抓到了,代码很简单,就是个post请求,但是下载不下来。

支持(0) 反对(1) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 14:07

@theDataDigger: 所以你的问题到现在还没解决

支持(0) 反对(0) 会发光 | 园豆:258 (菜鸟二级) | 2019-03-26 14:11

@会发光: 对的

支持(0) 反对(0) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 14:12

@theDataDigger: 自己心里没点数么

支持(0) 反对(0) 会发光 | 园豆:258 (菜鸟二级) | 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) 会发光 | 园豆:258 (菜鸟二级) | 2019-03-26 14:17

@会发光: 我代码加了refer也没用

支持(0) 反对(0) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 16:32

@theDataDigger: 你自己试吧,什么都看不到讨论个p,祖传代码

支持(0) 反对(0) 会发光 | 园豆:258 (菜鸟二级) | 2019-03-26 16:36

@会发光: 主要是账号不能给你,代码如果给你的话,你运行也没用,这是个收费网站

支持(0) 反对(0) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 16:38

@theDataDigger: 贴代码,别人看到你哪里的设置是怎么样的,明白吗?空口说什么?

支持(0) 反对(0) 会发光 | 园豆:258 (菜鸟二级) | 2019-03-26 16:41

@会发光: 好吧,大概是这样的,我获取了session,然后用session.post(url)去请求下载

支持(0) 反对(0) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 16:43
1

我试了一下,由于我的账号不能下载,点击的请求似乎也就是一个简单的post。如果你点击能下载下来,但是代码下载不下来。可能性无非是链接没找对,或者信息给错了。你可以先确认一下,你登录过session里面有没有这个cookie里面的所有信息。
另,你暴露了密码 test_2018。

Masako | 园豆:1893 (小虾三级) | 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 | 园豆:1893 (小虾三级) | 2019-03-26 16:33

@Masako: 你真的吓死我了,密码泄露很恐怖了,这个账号公司几万钱买的

支持(0) 反对(0) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 16:41

@theDataDigger: 这么贵啊。哈哈,冷静一点。我试了一下,请求没什么问题,主要就是根据这个Cookie来判断用户的,而且cookie好像没多久就过期了,你直接复制一下网页上的cookie放在headers里面,然后请求下载试试呢。

支持(0) 反对(0) Masako | 园豆:1893 (小虾三级) | 2019-03-26 16:46

@Masako: 我把请求头的数据都搞上去了,也没用

支持(0) 反对(0) theDataDigger | 园豆:6 (初学一级) | 2019-03-26 16:47

@theDataDigger: 那就不清楚了。可以再仔细看看下载请求流程,祝好运~

支持(0) 反对(0) Masako | 园豆:1893 (小虾三级) | 2019-03-26 16:59
0

应该是身份验证有问题,你先把下载下来的1kb内容打开看看是什么

ChnMig | 园豆:421 (菜鸟二级) | 2019-03-29 17:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册