md

弄了一天了……(这个月不会在摸爬虫了,浪费生命)

进入正题:

起初是想写一个爬虫来爬一个网站的视频,但是怎么爬取都爬取不到,分析了下源代码之后,发现源代码中并没有视频的dom

但是在浏览器检查元素的时候又是有的,这就让我很难过了

百度了一大天,发现是因为普通方法获取的只是服务器端本地的静态资源,也就是第一手资源

而浏览器检查元素的资源是经过js渲染后的代码

所以就要想办法去获得渲染后的代码

在看了若干个帖子之后……外加上一个httpclient课程和另一个htmlunit课程……

终于,在看完一个帖子后,知道了怎么获取渲染后网页的代码

首先,httpclient是普通httlurlConnection的升级版,可以模拟浏览器以防止被服务器封杀

但是抓取的源代码是静态的一手源代码,没有经过js渲染后的内容

所以就需要htmlunit工具,来让页面经过渲染,然后获取源代码

htmlunit的主要功能就是模拟人工操作页面内的元素,由于没有gui,所以要比普通操作要快,但是实际操作后发现还是需要肉眼可见的时间

具体两个工具的jar包在哪儿下载不在这赘述,相信看到这篇文章的人都应该知道在那里获取资源

下面直接贴上源码,具体语句含义在注释中有

源代码如下:

importjava.io.IOException;importjava.net.MalformedURLException;importcom.gargoylesoftware.htmlunit.BrowserVersion;importcom.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;importcom.gargoylesoftware.htmlunit.WebClient;importcom.gargoylesoftware.htmlunit.html.HtmlPage;public classHtmlUnit {public static voidmain(String[] args) {

WebClient webClient= newWebClient(BrowserVersion.FIREFOX_52);//模拟火狐浏览器try{//HtmlPage page = webClient.getPage("http://www.baidu.com");//webClient.getOptions().setCssEnabled(false);//webClient.getOptions().setJavaScriptEnabled(false);

webClient.setJavaScriptTimeout(5000);

webClient.getOptions().setUseInsecureSSL(true);//接受任何主机连接 无论是否有有效证书

webClient.getOptions().setJavaScriptEnabled(true);//设置支持javascript脚本

webClient.getOptions().setCssEnabled(false);//禁用css支持//webClient.getOptions().set

webClient.getOptions().setThrowExceptionOnScriptError(false);//js运行错误时不抛出异常

webClient.getOptions().setTimeout(100000);//设置连接超时时间

webClient.getOptions().setDoNotTrackEnabled(false);//HtmlPage page = webClient.getPage("http://blog.csdn.net/su20145104009?viewmode=contents");

HtmlPage page = webClient.getPage("http://www.enmeiyiyuan.com/look-5bf3f60b83145.html");//String res=page.asText();

Thread.sleep(3000);

System.out.println(page.asXml());

}catch(FailingHttpStatusCodeException e) {//TODO 自动生成的 catch 块

e.printStackTrace();

}catch(MalformedURLException e) {//TODO 自动生成的 catch 块

e.printStackTrace();

}catch(IOException e) {//TODO 自动生成的 catch 块

e.printStackTrace();

}catch(InterruptedException e) {//TODO 自动生成的 catch 块

e.printStackTrace();

}finally{

webClient.close();

}

}

}

那些注释掉的是之前尝试的……

然后一定要注意加上线程等待时间,不然获取的大概率还是第一手代码,因为js渲染需要时间,这里是等待了三秒,然后成功获取经过处理的源码

希望对大家有所帮助

以上

java 爬虫js渲染_java_爬虫_获取经过js渲染后的网页源码相关推荐

  1. htmlunit抓取js执行后的网页源码

    上次我不是写了一个自动抓取博客访问量吗 (点击打开链接) 可是昨天晚上我又运行的时候,发现不能用了.. 运行了几次 发现使用URLConnection 得到的网页源码和浏览器直接查看的不同. URLC ...

  2. C# -爬虫之WebBrowser跨域跨iframe获取网页源码

    前言:这里关键写用WebBrowser跨域跨iframe获取网页源码的部分,本意是要爬取全职高手的有声小说,这类网站特殊,网页上广告大堆,爬起来真麻烦,比如我爬取的网站的mp3源文件下载还需要秘钥的, ...

  3. java http 源码_httpclient下载网页源码---java基础爬虫

    有关httpclient: HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性,它不仅使客户端发送Http请求变得容易,而且也方便开发人员测试接口(基于Http协 ...

  4. python 爬虫源代码-Python爬虫学习之获取指定网页源码

    本文实例为大家分享了Python获取指定网页源码的具体代码,供大家参考,具体内容如下 1.任务简介 前段时间一直在学习Python基础知识,故未更新博客,近段时间学习了一些关于爬虫的知识,我会分为多篇 ...

  5. Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频、图片、获取网页源码等)整理

    Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频.图片.获取网页源码等)整理 目录

  6. eclipse if代码折叠_仅需一页Java代码就能实现网页源码爬取

    作者|小鱼儿. yanxiao|CSDN Java代码基于Eclipse简单实现网页源码爬取 今天给大家分享我的最新java学习进程--java网页源码爬虫,废话不多说盘代码. 仅需一页代码: pac ...

  7. Python爬虫鲁迅先生《经典语录》保存到Excel表格(附源码)

    Python爬虫鲁迅先生<经典语录>保存到Excel表格(附源码) 前言 今天用Python 爬取鲁迅先生<经典语录>,直接开整~ 代码运行效果展示 开发工具 Python版本 ...

  8. python爬网页源码_python爬虫爬取网页的内容和网页源码不同?

    可以看到这里id为k_total的元素值不同,爬出来是1,网页源码是55. 附还未完成的代码:import requests from bs4 import BeautifulSoup import ...

  9. [爬虫][python][入门][网页源码][百度图片][豆瓣TOP250]

    Robots协议 查看爬取规则 遵守相关法律法规 Robots协议(也称为爬虫协议.机器人协议等)的全称是"网络爬虫排除标准"(Robots Exclusion Protocol) ...

最新文章

  1. 2022-2028年中国香薰行业市场研究及前瞻分析报告
  2. VirtualProtect VirtualLock VirtualUnlock
  3. asp获取屏幕分辨率
  4. Kubernetes v1.6开始支持RBAC
  5. Effective C++ 条款11:在operator=中处理自我赋值
  6. java collection api_Java Stream和Collection比较:何时以及如何从Java API返回?
  7. 程序员的春天来了,赏花去!说走就走
  8. face-recognition库(人脸识别库)安装,使用
  9. oracle杀死进程时权限不足_如何解决Oracle数据库在迁移过程中的权限不足问题
  10. WEB前后端交互原型通用元件库、常用组件、信息输出、信息输入、信息反馈、综合系列、页面交互、首页、分类页、内容详情、用户中心、注册登录、找回密码、元件库、web元件库、rplib、axure
  11. PHP基础语法的学习
  12. 詹姆斯高斯林_詹姆斯·高斯林接下来要做什么?
  13. dell 重装linux系统_预装Linux(Ubuntu)的DELL笔记本重装Windows
  14. 知识问答之信息检索-1
  15. Python + ElasticSearch:有了这个超级武器,你也可以报名参加诗词大会了! | 博文精选...
  16. slack 开源系统_Slack团队聊天的5种开源替代品
  17. Android经典蓝牙相关知识
  18. 织梦(dede)更改默认管理员名称admin技巧
  19. 银河麒麟踩坑笔记——tty、单用户模式
  20. python文件处理相关

热门文章

  1. Is it bst?
  2. 一元线性回归,代价函数,相关系数/决定系数
  3. Ajax学习:Ajax设置请求头信息
  4. What Valuates Cryptocurrency?
  5. 苹果电脑删除word自动更新
  6. 路由器上网行为管理功能浅谈 -- 路由端
  7. 照片不小心删除了?用Thumbs.db来恢复吧
  8. 认识Json本质 一个较复杂Json串的解析实例
  9. Refactor this function to reduce its Cognitive Complexity from 40 to the 30 allowed
  10. PBI Report Server 触发式数据刷新