爬取URL解析JS后页面,简单例子:ChromeDriver,htmlunit,jbrowserdriver,phantomjs

需求:爬取项目中指定url页面,获取js执行后的html页面;

       调整样式,将此html页面(需支持highchart图表,表格,表单等),通过邮件方式发送给用户查看.

共有问题获取form表单中的值,

                 爬取输入框中的内容,

                 获取 input里面value的值。

问题产生原因爬虫爬取结果为html页面的"字符串"(相当于直接复制浏览器窗口里html标签的文本内容),

                            而input标签的value值在字符串中不可见,需通过节点操作(input.value)拿到

解决思路修改html字符串所有input等输入框标签,给标签字符串添加value=“真实值”(<input type="text" value="真实值">

ps:我的需求爬取的是自己的前台vue项目,让前台生成form表单时所有值都写在placeholder里面(?因为value属性加不了);也可以获取后台通过BY.xpath语法,获取所有的输入框节点,通过节点操作给input框字符串,添加属性值value='实际值‘

正题:

测试1:基于java嵌套浏览器:JBrowserDriver

package test.mail.demo;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;

import com.machinepublishers.jbrowserdriver.JBrowserDriver;
import com.machinepublishers.jbrowserdriver.Settings;
import com.machinepublishers.jbrowserdriver.Timezone;

public class JBrowserDemoTest {
	/*
	 * 采纳原因1:满足需求;
	 * 采纳原因2:代码量少;java嵌套浏览器,项目移植方便;
	 *
	 */
	public static void main(String[] args) throws IOException {
		String loginUrl="https://panjiachen.gitee.io/vue-element-admin/#/login?redirect=%2Fdashboard";
		String url="https://panjiachen.gitee.io/vue-element-admin/#/permission/role";
		String htmlStr = getUrlHtml(loginUrl,url);
		System.out.println("html"+htmlStr);
		//将解析url的html内容文件形式写到当前项目下,方便浏览器打开对比页面爬取效果
		FileUtils.writeStringToFile(new File("url内容.html"), htmlStr,"UTF-8");
	}
	//方案1&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值