楼主的意思是只要<script>标签内的内容还是说要提取js执行后的网页源码?
只要<script>标签内的内容可以写正则匹配去获取
要提取js执行后的网页源码需要抓取网页的时候支持js加载。
其实你自己已经说了答案。
普通流程:
1请求获取html
2DOM树分析或字符串处理筛选数据
3存储数据
你的情况:
1请求获取js
2执行js(可能需要js重新包装再处理)得到html
3DOM树分析或字符串处理筛选数据
4存储数据
---------------------------
只是多了一层处理方式而已,或者也可以拿到js后,直接字符串处理包装。
js与java是不同语言,运行在不同环境下,因此无法直接获得对方数据。
java运行在服务器端,在同一个jsp文件中,java先运行,js后运行,java可以生成一段js代码,保证js运行得到相应的结果,因此可以用java定义js变量的方式来传递数据,例如:
<script>
var url="<%=url%>";
alert(username);
</script>
上面例子,<%%>中的内容会在服务器端运行,在“”中间输出网址,浏览器就会加载下面的结果:
<script>
var url="gif8cn";
alert(url);
</script>
这部分就是标准的js代码了。
很多网站是用js或Jquery 生成数据的,到后台获取到数据以后,用 documentwrite()或者("#id")html="" 的方式 写到页面中,这个时候用浏览器查看源码是看不到数据的。
>
主页预览
文章内容直接get主页就可以拿到,页面内容太长,这里就不贴具体内容了,chrome自行查看。URL结构也非常简单,只需要修改后面的文章id就可以。
============ 2019年8月10日更新
一点资讯的搜索接口有调整,新的搜索接口:
Post 请求
请求url:
参数中的display是搜索的关键词
请求头:
============ 旧版搜索(已经不能使用)
搜索界面预览 (请使用chrome的手机模拟)
搜索接口
这个接口返回的是输入框输入之后提示出来的信息,这个其实要比点击搜索之后给出的要好,因为这个里面给出的信息很多。大概结构是这样:
这里备用一下完整的参数请求,实际上大胆去掉后面两个参数,并不影响我们获取内容。
在搜索界面会提示当前的热搜关键词, 接口页面:
热搜接口
基础url
请求参数
我们不断的下拉,查看异步请求,filter设置为 channel
然后对比请求发现参数的规律如下
其他参数都是固定值。所以我们需要追踪_spt这个参数。全局搜索一下_spt,只有一个文件中发现了这个字符串
定位到这个函数中function(e, t, i), 我们给函数打上一堆断点,然后F5刷新页面,稍等一会,页面会加载到断点的位置暂停,我们按F8可以继续执行。然后不断的按下F8,我们可以看到各个变量的值,
执行到59行时:
这时候拿到channel_id,保存在变量t中,这里拿到的t是best,当然,不同的广场标签对应channel不一样。这个id明文传输在参数中。
继续F8,我们开始进入到第一个循环中,变量o的初始值为sptoken,循环会把arguments中除了第一个字符串全部追加的o的后面,arguments中有四个字符串
看下这几个字符串都是什么,
现在就差后面两个参数,我们不断上划加载数据然后重复F8的过程看看数据的变化:
可以看到后面两个参数就是起止数目,参数中的cstart和cend。于是到此为止,可以说基本破解成功了。我们写个python函数:
对比一下网站的参数:
搞定!
这里有个地方很有意思啊, 该网站对web的访问控制是通过明文参数控制的
个人首页
然后,链接地址就出现在了对应的标签中。很容易找到。
以上就是关于java网页抓取怎么提取该网页中SCRIPT的信息全部的内容,包括:java网页抓取怎么提取该网页中SCRIPT的信息、如果网页内容是由javascript生成的,应该怎么实现爬虫呢、在jsp页面中java代码获取js里面var变量的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)