Maven官網:https://mvnrepository.com/artifact/net.sourceforge.htmlunit/htmlunit/2.37.0
(一)使用前的配置:
1,使用IDEA創建web項目:https://blog.csdn.net/MyArrow/article/details/50824793
2,(1)添加依賴:
<dependency> <groupId>us.codecraft</groupId> <artifactId>webmagic-core</artifactId> <version>0.7.3</version> </dependency> <dependency> <groupId>us.codecraft</groupId> <artifactId>webmagic-extension</artifactId> <version>0.7.3</version> </dependency> <dependency> <groupId>us.codecraft</groupId> <artifactId>webmagic-selenium</artifactId> <version>0.7.3</version> </dependency>
(2)從GitHub官網下載webmagic的壓縮包(https://codeload.github.com/code4craft/webmagic/zip/master),將webmagic-core使用Module from Existing Source..導入項目中
(3)在resources中添加資源文件log4j.properties中添加
# Set root logger level to DEBUG and its only appender to A1. log4j.rootLogger=INFO, A1 # A1 is set to be a ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender # A1 uses PatternLayout. log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n
(二)寫程序爬蟲:
抽取元素:
1,page使用css選擇器
2,page使用XPath
3,使用正則表達式
regex(“正則表達式”)
獲取元素:
設置爬蟲屬性:site
Scheduler組件:
1,對抓取的url保存到隊列
2,對抓取的url去重
(三)使用htmlunit模擬點擊https://www.bilibili.com/video/av62605696;官方文檔:http://htmlunit.sourceforge.net/apidocs/
htmlunit模擬js運行
1,獲取文本框和按鈕,設置文本框的值,然后使用按鈕的click方法提交獲得新的頁面
例子:
package com.open1111; import java.io.IOException; import java.net.MalformedURLException; import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlForm; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput; import com.gargoylesoftware.htmlunit.html.HtmlTextInput; public class HtmlUnitTest5 { public static void main(String[] args) { WebClient webClient=new WebClient(BrowserVersion.FIREFOX_52); // 實例化Web客戶端 try { HtmlPage page=webClient.getPage("http://blog.java1234.com/index.html"); // 解析獲取頁面 HtmlForm form=page.getFormByName("myform"); // 得到搜索Form HtmlTextInput textField=form.getInputByName("q"); // 獲取查詢文本框 HtmlSubmitInput button=form.getInputByName("submitButton"); // 獲取提交按鈕 textField.setValueAttribute("java"); // 文本框“填入”數據 HtmlPage page2=button.click(); // 模擬點擊 System.out.println(page2.asXml()); } catch (FailingHttpStatusCodeException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ webClient.close(); // 關閉客戶端,釋放內存 } } }