java 爬虫讨论: jsoup, htmlunit 灯获取html 源码弊端

时间:2022-10-31 10:34:42
想用 jsoup htmlunit 工具做个爬虫, 其基本原理无非是 根据URL链接获取html 源码 然后解析 定位目标标签 获取 标签的属性信息即:所爬取的内容;但发现个大麻烦。
问题: 工具解析定位元素 的 功能 没有问题,但获取有的url链接 的html 保存或打印后 与 浏览器打开URL 查看HTML源码比较 大相径庭;  用Jsoup htmlunit jar 包工具获取的源码 根本不全,导致完全没法得到预期的定位的元素标签 进而无法获取 爬取的内容。
如:TaoBao的一个产品链接。
如图:java 爬虫讨论: jsoup, htmlunit 灯获取html 源码弊端


尝试解决方案:
1. 用一些自动化的测试工具selenium 打开浏览器后获取源码,但开销大,效率 无法接受;
2. 开源爬虫框架,查了些资料,听说也存在这样的问题,只是在业务方面管理好点,对获取内容换汤不换药(有用过的朋友发表的看法)。
3.是研究并分析出该页面在发生滚动后,究竟向服务器发出了什么新的请求,是怎么增量刷出其它内容的。然后直接用程序去构造这个新的HTTP请求。(难度不小,这块的基础很薄弱,用Chrome 开发这工具 实验半天 没收获)

 有相关经验的 老司机 分享 指点指点;
尾语:发现爬虫这类的开发 看似相对简单但 很多麻烦和问题 没地方查,没地方问 做得真憋屈。
 

1 个解决方案

#1


 有些页面不是模拟发送请求就可以的, 有些页面内容需要js脚本在浏览器运行起来才能有。  这部分动态生成的页面无法通过页面代码获取到的。    如果要去模拟这些js的执行也很麻烦。    
很多年前用vb和vbs写过爬虫, 当年的解决方法是用WebBrowser控件来处理网页获取内容的。速度的话,也不会太慢。 其实太快也没用,  快了淘宝就弹验证码出来了。

#1


 有些页面不是模拟发送请求就可以的, 有些页面内容需要js脚本在浏览器运行起来才能有。  这部分动态生成的页面无法通过页面代码获取到的。    如果要去模拟这些js的执行也很麻烦。    
很多年前用vb和vbs写过爬虫, 当年的解决方法是用WebBrowser控件来处理网页获取内容的。速度的话,也不会太慢。 其实太快也没用,  快了淘宝就弹验证码出来了。