最近接了一个将一个快下线的网站的所有内容都下载下来并离线能正常使用的需求。

最开始是用 Teleport Ultra 来爬的,但是登陆后的内容总是爬不下来,在看了该网站的登陆机制后,觉得可能的原因是:

登陆成功后网站不是响应一个页面出来,而是响应的302状态码,响应的内容是空的。然后前端会再去访问后端,这样响应出来的网页就是登陆后的网页。Teleport Ultra 可能是不支持这样的机制吧。我自己改了前端的登陆界面,绑定了用户名和密码,并将登陆函数设置成加载就执行,再去让Teleport Ultra请求还是不行。最后我只能自己写程序来爬网站了。还有可能是这个登陆是用表单来提交数据的,不知道和这个有没有关系。

*********************************************

欢迎大家来讨论下载不了的原因

**********************************************

java下载网页到本地的程序如下:

public static void main(String []args){String url = "http://www.pat.aero/gro/users/login";HttpPost httpPost = new HttpPost(url);String json = "data[User][username]=XXX&data[User][password]=XXX";httpPost.addHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");httpPost.setHeader("Accept", "application/json");// 构建消息实体StringEntity entity = new StringEntity(json, Charset.forName("UTF-8"));entity.setContentEncoding("UTF-8");// 发送Json格式的数据请求entity.setContentType("application/json");httpPost.setEntity(entity);try {HttpResponse response=client.execute(httpPost);String getUrl = "http://www.pat.aero/gro/main/";// 紧接着发送一个get请求HttpGet httpGet = new HttpGet(getUrl);HttpResponse execute = client.execute(httpGet);String startStr = EntityUtils.toString(execute.getEntity(), "utf-8");genFile(startStr,"start.html");splitDownloadFile(startStr);} catch (Exception e) {logger.error("主函数捕获异常:{}",e.getMessage());}}

注:

1、上面的代码只展示了如何去下载一个网页的功能,要是想爬全站的话,还需要把页面中的链接全部分离出来,再去一个个的请求,我实际上采用的深度优先遍历,并剪枝来下载的。剪枝其实就是设置一个set保存所有已经下载过得页面,再根据分离出来的地址去访问的时候先去访问set,如果没有再去请求。

2、对网页中的链接地址也需要遍历去修改,对于js函数,直接去修改下载到对应的js文件中的内容。就可以实现在本地访问了。

由于不同网站有不同的处理方式,代码我就不贴上来了,其实也就是字符串的操作。比较麻烦,写起来还是挺简单的。

多线程是必须的,不然特别慢

微信公众号:二虎程序

Teleport Ultra抓取不到登陆后的页面相关推荐

  1. 【Python爬虫教学】百度篇·手把手教你抓取百度搜索关键词后的页面源代码

    [开门见山] 最近整理了下之前做过的项目,学的东西不少,乱七八糟.打算写点关于 Python 爬虫的东西,新人一枚,还望大佬们多多担待,别把我头给打歪了. 前面我先磨叽磨叽些基础的东西,对爬虫新人友好 ...

  2. 使用teleport ultra爬取网站源码

    有时候看到好看的网站总想爬取下来玩一玩,模仿一下,这里介绍一个好用的工具teleport ultra 下载链接:teleport ultral 下载之后,安装,注意安装的时候把默认勾选的推广软件取消了 ...

  3. Teleport Ultra 抓包工具

    Teleport Ultra 所能做的,不仅仅是离线浏览某个网页,它可以从 Internet 的任何地方抓回你想要的任何文件. 它可以在你指定的时间自动登录到你指定的网站下载你指定的内容,你还可以用它 ...

  4. 电子台账:模板制作之四——抓取多行数据后自动进行数据合并(脑力活版本)

    1 前言 前面介绍了制作行过滤模板体力活版本,这种方式下,如果产品很多,会非常麻烦,因为需要把每个产品都拖到模板中. 聪明的小伙伴需要来个批量完成,恰好咱们这个小软件就有这个功能. 把原来那个需求简图 ...

  5. python frame框架抓取_Python抓取框架Scrapy爬虫入门:页面提取

    前言 Scrapy是一个非常好的抓取框架,它不仅提供了一些开箱可用的基础组建,还能够根据自己的需求,进行强大的自定义.本文主要给大家介绍了关于Python抓取框架Scrapy之页面提取的相关内容,分享 ...

  6. java取网页数据_Java抓取网页数据(原来的页面+Javascript返回数据)

    转载请注明出处. 有时候因为种种原因.我们须要採集某个站点的数据.但因为不同站点对数据的显示方式略有不同! 本文就用Java给大家演示怎样抓取站点的数据:(1)抓取原网页数据.(2)抓取网页Javas ...

  7. 微信小程序登陆后的页面显示tabbar

    微信小程序登录后,可以在页面中使用 "tabbar" 组件来显示底部导航栏. 在微信小程序的 app.json 文件中,可以配置 "tabBar" 属性来配置底 ...

  8. 数据从业者必读:抓取了一千亿个网页后我才明白,爬虫一点都不简单

    编者按:互联网上有浩瀚的数据资源,要想抓取这些数据就离不开爬虫.鉴于网上免费开源的爬虫框架多如牛毛,很多人认为爬虫定是非常简单的事情.但是如果你要定期上规模地准确抓取各种大型网站的数据却是一项艰巨的挑 ...

  9. ListView与.FindControl()方法的简单练习 #2 -- ItemUpdting事件中抓取「修改后」的值

    原文出處  http://www.dotblogs.com.tw/mis2000lab/archive/2013/06/24/listview_itemupdating_findcontrol_201 ...

最新文章

  1. 鸿蒙os操作系统合作伙伴,华为公布三大鸿蒙OS系统 已有大量合作伙伴进行开发...
  2. 3Dslicer1:入门及基本控制
  3. NHibernate 3.0在PetShop 3层架构中的应用 系列
  4. github网址无法访问怎么办?
  5. python2048游戏代码_【Python】用Python实现2048小游戏(源代码,1.0版本)
  6. Video视频背景设计企业模板
  7. panasonic 松下被黑
  8. 更改select里面的值
  9. 东西湖职业技术学校计算机专业怎么样,武汉东西湖职业技术学校怎么样
  10. Keil MDK4及MDK5的下载及注册 STM32F10x 标准外设库的下载
  11. 计算机硬盘的内存单位换算,内存的单位换算
  12. k8s 部署 xxl-job-admin:2.3.0
  13. 【易代账】易代账/好会计软件导入账套备份文件,提示服务商不一致。
  14. CYP音乐emlog主题免费版
  15. 深度学习--综述前言
  16. CFileDialog过滤的用法
  17. 使用GO操作MongoDB
  18. 数据结构与算法——迷宫问题
  19. 扫码授权登录最佳实践
  20. JavaWeb简单科研管理系统(jsp+Mysql8.0)

热门文章

  1. 如何优雅的设计 Spring Boot API 接口版本号
  2. iOS 10 中时区问题导致 DateTools 框架 weekday 方法计算不正确
  3. ubuntu16.4安装vnc x11vnc 远程可视化界面
  4. 快餐行业(网上订餐)如何与网络相结合?
  5. 软件测试简单么,发展前景如何?
  6. 二维“能量源”(电场、磁场、功率)入射边界设置方法
  7. 第10章 广域网技术概述
  8. 茴香豆的茴有多种写法 (之 线程池)
  9. android多级树形列表,移动应用开发专业前景工资
  10. php设计 mobi,PHP程序设计高级教程