首页 >>  正文

java爬虫怎么抓取js动态生成的内容

来源:www.zuowenzhai.com    作者:编辑   日期:2024-06-02
爬虫怎么爬取js动态生成的数据

我用Jsoup写爬虫,一般遇到html返回没有的内容。但是浏览器显示有的内容。都是分析页面的http请求日志。分析页面JS代码来解决。
1、有些页面元素被隐藏起来了->换selector解决
2、有些数据保存在js/json对象中->截取对应的串,分析解决
3、通过api接口调用->伪造请求获得数据
还有一个终极方法
4、使用phantomjs或者casperjs这种headless浏览器

修改和增加的地方请看注释,内容太多就不多解释了^_ ^。




">







function addRow(){
var row=document.getElementById("tr1");
var table=document.getElementById("table");
var newtr=table.insertRow(); //去掉这里的参数10,要同时增加10行请用for循环
for(var i=0;i<4;i++){
var newtd=newtr.insertCell();
newtd.innerHTML=row.cells[i].innerHTML;
newtd.align="center";
}

}
function getValueOfRow(){ //增加一个函数,将在“设置”中调用
var ret,curr=[];
var rows=document.getElementById('table').rows;
var result=document.getElementById('result'); //在底部增加了一个ul 存放结果
result.innerHTML='';
for(var i=1;i<rows.length;i++){
for(var j=0;j<4;j++){
curr[j]=rows[i].cells[j]; //取得每一行的各个td,并赋给curr数组
}
var value0=curr[0].getElementsByTagName('input')[0].value;
var value1=curr[1].getElementsByTagName('select')[0].value; //取得select的value,要取得选项的文字,就把这一行的value改为text,还要稍作修改
var value2=curr[2].getElementsByTagName('input')[0].value;
var value3=curr[3].getElementsByTagName('textarea')[0].value;

var ret=value0+'
'+value1+'
'+value2+'
'+value3;
// alert(ret);
result.innerHTML+=''+ret+'';
}
}












未设置信道
TDMA控制信道
TDMA业务信道
TDMA不能轮信的业务信道
TDMA中继信道
FDMA控制信道
FDMA业务信道
FDMA不能轮信的业务信道
FDMA中继信道























我用Jsoup写爬虫,一般遇到html返回没有的内容。但是浏览器显示有的内容。都是分析页面的http请求日志。分析页面JS代码来解决。
1、有些页面元素被隐藏起来了->换selector解决
2、有些数据保存在js/json对象中->截取对应的串,分析解决
3、通过api接口调用->伪造请求获得数据
还有一个终极方法
4、使用phantomjs或者casperjs这种headless浏览器

如果评论是通过AJAX显示的,那么抓取有一定难度。你的爬虫需要能够解释JS,并解惑JS的内容。但如果你只针对少数的网站进行抓取,则可以针对这些网站开发专用的蜘蛛。人工分析其JS,从中找到其获取评论的AJAX接口,然后抓之。这样简单。还可以用爬虫操作一个浏览器,通过浏览器的接口获取其运行完成后的显示的内容

用nodejs+puppeteer,解析dom结构获取,或者直接观察返回数据的接口,看能不能直接调用


17096061242java爬虫怎么抓取js动态生成的内容
祁费功答:1、有些页面元素被隐藏起来了->换selector解决 2、有些数据保存在js/json对象中->截取对应的串,分析解决 3、通过api接口调用->伪造请求获得数据 还有一个终极方法 4、使用phantomjs或者casperjs这种headless浏览器

17096061242请问一下 你知道如何用爬虫爬取到动态的JS写的网站信息吗?
祁费功答:一、关键字,自行处理。二、使用js 虚拟机。

17096061242java写网络爬虫,如何爬取在同一个网页中,但是已经被隐藏的div(需要点击...
祁费功答:这种是用js实现的。所以后面的内容实际上是动态生成的,网络爬虫抓取的是静态页面。至于解决办法,网上有几种:一种是使用自动化测试工具去做,比如selenium,可以模拟点击等操作,但是这个其实和爬虫还是有很大区别的。二是利用特定的类库在后端调用js,python的倒是有,但是java的我就不清楚了。三是自己...

17096061242怎么爬取网页的动态内容,很多都是js动态生
祁费功答:抓取动态页面有两种常用的方法,一是通过JavaScript逆向工程获取动态数据接口(真实的访问路径),另一种是利用selenium库模拟真实浏览器,获取JavaScript渲染后的内容。但selenium库用起来比较繁琐,抓取速度相对较慢,所以第一种方法日常使用较多。

17096061242网页内容是用 json 动态生成的,需要怎么爬取
祁费功答:1用dryscrape库动态抓取页面 js脚本是通过浏览器来执行并返回信息的,所以,抓取js执行后的页面,一个最直接的方式就是用python模拟浏览器的行为。WebKit 是一个开源的浏览器引擎,python提供了许多库可以调用这个引擎,dryscrape便是其中之一,它调用webkit引擎来处理包含js等的网页!2 selenium web测试框架...

17096061242js的网页爬虫爬不到吗
祁费功答:是因为用js生成的网页,是通过浏览器加载js代码之后,由js动态生成的。用爬虫直接去抓网页的话,抓下来的是原始代码,浏览器还未解析过的内容。纯 html 的话,抓下来可以直接拿来用,但是如果是由 js 动态生成的网页的话,就没办法直接用了。像通过js动态加载的网页,理论上如果能用开源的浏览器内核...

17096061242如何用python爬虫直接获取被js修饰过的网页Elements?
祁费功答:对于这种动态加载的网站,建议使用第三方库selenium爬取。它可以完全模拟浏览器,等待网站全部加载完成后再进行数据的自动获取。对于主流的ChromeDriver、InternetExplorerDriver、FirefoxDriver、OperaDriver都支持,网站上的元素也支持多种选择器,如class、id、xpath等。但是用习惯以后,对于这种非纯静态页面,...

17096061242java 爬取网页时爬取不全是什么原因
祁费功答:如果您使用Java进行网页爬取时出现爬取不全的情况,可以尝试以下解决方法:1. 检查网络连接:确保您的网络连接稳定,可以尝试重新连接或更换网络环境。2. 检查代码逻辑:检查您的爬虫代码是否存在逻辑错误,例如是否漏掉了某些页面或数据。3. 处理动态加载:有些网页使用了AJAX或其他动态加载技术,您需要使用...

17096061242phantomjs怎么抓取页面的动态数据
祁费功答:phantomjs因为是无头浏览器可以跑js,所以同样可以跑dom节点,用来进行网页抓取是再好不过了。比如我们要批量抓取网页 “历史上的今天” 的内容。网站 对dom结构的观察发现,我们只需要取到 .list li a的title值即可。因此我们利用高级选择器构建dom片段 var d= ''var c = document.querySelectorAll(...

17096061242百度爬虫能不能爬javascript生成的内容
祁费功答:这个不可以,因为很多还没有生成html,所以抓不到。除非你打开这个页面,让那些JavaScript生成后再抓取。


(编辑:扶劳容)
联系方式:
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图
@ 作文摘要网