學習使用Java的webmagic框架爬取網頁內容


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(); // 關閉客戶端,釋放內存
        }
    }
}

 

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM