关于webmagic下载动态文件(web后台生成的excel)的问题/或者说是如何提取到webmagic的cookie

发布于 2021-11-26 18:16:12 字数 401 浏览 933 评论 3

页面上可以获取到url,直接打开urlconnection的inputstream,avliable()返回值是0.因为后台需要时间生成excel.

但是webmagic可以很好的下载出来,只是在page对象已经包含了下载的内容,只能getRawText(),请问能否基于download或者其他方式获取到inputstream?


已经知道为什么inputstream的avliable()为什么是0,因为访问下载excel的URL后台应该通过cookie或者session来生成excel,自己额外写的是直接返回空白数据.

那么把webmagic抓取的时保留的cookie提取出来应该可行.


但是还是想问,如何获取inputStream...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

千纸鹤带着心事 2021-12-03 15:30:54

有没有包含相应头还真没注意,当时导出的文件是一个Excel.当时直接使用这个流输出到本地就是一个完整的excel了.应该是没有包含相应头的.

清晨说ぺ晚安 2021-12-03 13:24:48

这个返回值里如何取得response headers?entity中的inputstream包含了
response headers?对吗

三月梨花 2021-11-28 07:18:52

研究了大半天 我自己说说吧

我在默认的下载器HttpClientDownloader里找到了Page的生成代码 

其中有

String content=getContent(charset,httpResponse);
Page page=new Page();
page.setRawText(content);

跟进getContent

发现其中逻辑是将InputStream转成byte[]后再转成String

byte[] contentBytes=IOUtils.toByteArray(httpResponse.getEntity().getContent());

return new String(contentBytes);

其中编码是从site中提取的编码,但是我使用site中的编码解析出现乱码.

于是我重写了downloader类,然后在获取在获取这个页面的时候临时替换编码,尝试了各种编码

万万没想到IOS-8859-1居然成功解析,大功告成.成功获取到动态文件的InputStream.

但是这样必须重写HttpClientDownloader

希望作者在新版本的时候加入功能,不同的页面可以使用不同的downloader,一个是可能就有些站点页面编码和文件编码有冲突,二个是可以更多的增加灵活性,麻烦作者咯~

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文