java htmlunit js_jsoup+htmlUnit可以实现抓取执行过js的html页面

这段代码展示了如何使用WebClient模拟浏览器行为,包括设置User-Agent、Cookie、JavaScript支持等,以抓取并解析网页内容。通过设置Ajax控制器和等待JavaScript执行,确保获取到完整的动态页面数据。
摘要由CSDN通过智能技术生成

1 public static Document getDocument() throwsIOException, InterruptedException{2 /*String url="https://www.marklines.com/cn/vehicle_sales/search_country/search/?searchID=587200";3 Connection connect = Jsoup.connect(url).userAgent("")4 .header("Cookie", "PLAY_LANG=cn; _plh=b9289d0a863a8fc9c79fb938f15372f7731d13fb; PLATFORM_SESSION=39034d07000717c664134556ad39869771aabc04-_ldi=520275&_lsh=8cf91cdbcbbb255adff5cba6061f561b642f5157&csrfToken=209f20c8473bc0518413c226f898ff79cd69c3ff-1539926671235-b853a6a63c77dd8fcc364a58&_lpt=%2Fcn%2Fvehicle_sales%2Fsearch&_lsi=1646321; _ga=GA1.2.2146952143.1539926675; _gid=GA1.2.1032787565.1539926675; _plh_notime=8cf91cdbcbbb255adff5cba6061f561b642f5157")5 .timeout(360000000);6 Document document = connect.get();*/

7 WebClient wc = newWebClient(BrowserVersion.CHROME);8 //是否使用不安全的SSL

9 wc.getOptions().setUseInsecureSSL(true);10 //启用JS解释器,默认为true

11 wc.getOptions().setJavaScriptEnabled(true);12 //禁用CSS

13 wc.getOptions().setCssEnabled(false);14 //js运行错误时,是否抛出异常

15 wc.getOptions().setThrowExceptionOnScriptError(false);16 //状态码错误时,是否抛出异常

17 wc.getOptions().setThrowExceptionOnFailingStatusCode(false);18 //是否允许使用ActiveX

19 wc.getOptions().setActiveXNative(false);20 //等待js时间

21 wc.waitForBackgroundJavaScript(600*1000);22 //设置Ajax异步处理控制器即启用Ajax支持

23 wc.setAjaxController(newNicelyResynchronizingAjaxController());24 //设置超时时间

25 wc.getOptions().setTimeout(1000000);26 //不跟踪抓取

27 wc.getOptions().setDoNotTrackEnabled(false);28 WebRequest request=new WebRequest(new URL("https://www.marklines.com/cn/vehicle_sales/search_country/search/?searchID=587200"));29 request.setAdditionalHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0");30 request.setAdditionalHeader("Cookie","PLAY_LANG=cn; _plh=b9289d0a863a8fc9c79fb938f15372f7731d13fb; PLATFORM_SESSION=39034d07000717c664134556ad39869771aabc04-_ldi=520275&_lsh=8cf91cdbcbbb255adff5cba6061f561b642f5157&csrfToken=209f20c8473bc0518413c226f898ff79cd69c3ff-1539926671235-b853a6a63c77dd8fcc364a58&_lpt=%2Fcn%2Fvehicle_sales%2Fsearch&_lsi=1646321; _ga=GA1.2.2146952143.1539926675; _gid=GA1.2.1032787565.1539926675; _plh_notime=8cf91cdbcbbb255adff5cba6061f561b642f5157");31 try{32 //模拟浏览器打开一个目标网址

33 HtmlPage htmlPage =wc.getPage(request);34 //为了获取js执行的数据 线程开始沉睡等待

35 Thread.sleep(1000);//这个线程的等待 因为js加载需要时间的36 //以xml形式获取响应文本

37 String xml =htmlPage.asXml();38 //并转为Document对象return

39 returnJsoup.parse(xml);40 //System.out.println(xml.contains("结果.xls"));//false

41 } catch(FailingHttpStatusCodeException e) {42 e.printStackTrace();43 } catch(MalformedURLException e) {44 e.printStackTrace();45 } catch(IOException e) {46 e.printStackTrace();47 }48 return null;49 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值