需求:爬取项目中指定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&#