java爬蟲框架webmagic的搭建與示例,爬取csdn

最近在搗鼓python,被python的神話傳說洗腦了,用了一陣才發現也沒有真的那麼牛逼,關鍵還是看用熟悉哪個,而且python相對java的簡略,其實也是有利有弊,自由度高了,項目一大,可讀性就降低了,而且我發現python資料遠沒有java資料來的多,所以打算將自己的項目重新轉會java來編寫,這裡我們說一下java的爬蟲跨家webmagic

工具/原料

java
eclipse

方法/步驟

首先在在網上下載webmagic的依賴jar包,直接去官網下載即可,webmagic是github上的一個開源項目

將下載下來的jar包解壓,放入我們新建的java工程項目中,然後bulidpath,將jia包依賴進來

之後我們創建一個自己的處理類,這個類需要實現PageProcessor接口,然後重寫未實現的方法

只需要重寫倆個方法,我們就可以完成一個webmagic爬蟲示例

第一個方法是用來對爬蟲進行相關參數的設置的,包括斷線重連間隔和請求間隔

然後我們爬去csdn上的最新文章標題,下面就是代碼全文:

package spider;

import us.codecraft.webmagic.Page;

import us.codecraft.webmagic.Site;

import us.codecraft.webmagic.Spider;

import us.codecraft.webmagic.processor.PageProcessor;

public class BaiDuJingYan implements PageProcessor {

//爬蟲的配置,                            重試時間             抓取間隔

private Site site = Site.me().setRetryTimes(3).setSleepTime(100);

//計數器

private static int count = 0;

public static void main(String[] args) {

long startTime,endTime;

System.out.println("開始爬取...");

startTime = System.currentTimeMillis();

Spider.create(new BaiDuJingYan()).addUrl("https://www.cnblogs.com/").thread(5).run();

endTime = System.currentTimeMillis();

System.out.println("爬取結束,耗時約"+((endTime - startTime)/1000)+"秒,爬取了"+count+"條記錄");

}

@Override

public Site getSite() {

return site;

}

@Override

public void process(Page page) {

//判斷連結是否符合http://www.cnblogs.com/數字字母-/p/7個數字.html格式

if(!(page.getUrl().regex("http://www.cnblogs.com/[a-z 0-9 -]+/p/[0-9]{7}.html").match())) {

//加入滿足條件的連結

page.addTargetRequests(

page.getHtml().xpath("//*[@id=\"post_list\"]/div/div[@class='post_item_body']/h3/a/@href").all()

);

}else {

//獲取頁面需要的內容

System.out.println("抓取的內容:"+page.getHtml().xpath("//*[@id=\"Header1_HeaderTitle\"]/text()").get());

count++;

}

}

}

然後我們運行一下代碼,成功爬去csdn網站上的一些數據並將其列印了出來,ok,webmagic框架接入成功

ps:補充一個問題,那個錯誤提示並不影響我的運行,所以沒有管,可是有些小夥伴反映不解決這個問題根本沒法跑,嗯下面解決一下這個打日誌的jar沒加載上的問題

在複製進來的lib目錄下創建一個名叫 log4j.properties 的文件

log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n

然後將這個lib目錄加入到run命令的配置中:

add the location of your log4j.properties file to the Classpath in Eclipse.

Make sure your project is open in Eclipse, then click on the "Run" menu at the top of Eclipse and click on the following:

Run

Run Configurations

Classpath (tab)

User Entries

Advanced (button on the right)

Add Folders

then navigate to the folder that contains your log4j.properties file

Apply

Run

注意事項

如果覺得有用就給我投票吧(~ ̄▽ ̄)~

相關文章

  1. Java Spring框架 的簡單搭建

    基於IoC/DI的一個對象容器,管理系統中的對象的創建和裝配過程. IoC: 控制反轉 DI: 依賴注入 工具/原料 java spring 方法/步驟 1. spring框架搭建 加入jar包 SP ...
  2. Java爬蟲框架簡介

    Java爬蟲框架簡介 方法/步驟 架構圖 那裡搜網絡爬蟲框架主要針對電子商務網站進行數據爬取,分析,存儲,索引. 爬蟲:爬蟲負責爬取,解析,處理電子商務網站的網頁的內容 資料庫:存儲商品信息 索引:商 ...
  3. 搭建JAVA WEB框架環境

    安裝JAVA JDK,可以選擇安裝1.6版,最新版本為1.7,安裝完畢後配置環境變量JAVA_HOME以及path 安裝並且在系統變量配置完JDK後便可以在DOS命令窗口下輸入java -versio ...
  4. JAVA三大框架之一Struts2框架搭建

    搭建Struts2框架節省了開發時候,提高了開發效率,規範了代碼的結構! 工具/原料 電腦,MyEclipse軟體等 方法/步驟 打開MyEclipse軟體,建立一個Java web項目,如下圖所示. ...
  5. 在windows下搭建python的scrapy爬蟲框架

    網絡上現有的windows下搭建scrapy教程都比較舊,一般都是咔咔咔安裝一堆軟體,太麻煩,這是因為scrapy框架用到好多不同的模塊,其實查閱最新的官網scrapy文檔,在windows下搭建sc ...
  6. 如何利用XMind繪製Java知識點框架圖

    XMind是一款思維導圖軟體,是基於Java語言開發的.它可以繪製各種不同類型的圖,如思維導圖.平衡圖.組織結構圖.樹狀圖和邏輯圖等等.Java知識框架圖,可以使用XMind進行繪製.現在,我們以思維 ...
  7. JAVA集合框架:[21]map案例一

    map案例代碼: ①: import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import ...
  8. JAVA集合框架:[61]UDP的服務端編寫

    package net1; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSo ...
  9. JAVA集合框架:[40]arraylist知識

    import java.util.ArrayList; import java.util.Iterator; /** * 熟悉兩個快捷鍵:shift+ctrl+s,快捷創建構造函數等 * shift+ ...
  10. 如何使用WebMagic快速搭建項目

    爬蟲,用於抓取數據,現在網絡上有很多開源爬蟲軟體工具,本篇介紹如何使用WebMagic快速搭建一個項目.以爬取某新聞頁面新聞內容為例.圖中是一條新聞的標題及連結. 工具/原料 eclipse mave ...
  11. java ssh框架如何接受移動端傳過來的json字符串

    java ssh框架如何接受移動端傳過來的json字符串 方法/步驟 1.以下代碼是用流的形式接收json字符串 StringBuffer s = new StringBuffer();       ...
  12. JAVA集合框架:[6]字符串計數練習題

    public class Count { /** * @param args * * 一個字串在整串中出現的次數 * "nbaernbatynbauinbaopnba" * 思路: ...
  13. JAVA集合框架:[24]map練習題

    import java.util.Map; import java.util.TreeMap; import java.util.Iterator; public class Treemap { pu ...
  14. JAVA集合框架:[44]流的需求分析案例

    需求1:複製一個文本文件 ①明確源和目的:源:inputstream reader.目的:outputstream writer ②是否是純文本?是!源:reader.目的:writer ③明確具體設 ...
  15. JAVA集合框架:[28]泛型案例2

    public class Jk { /** * @param args */ public static void main(String[] args) { // TODO Auto-generat ...
  16. JAVA集合框架:[36]linklist練習

    ④LinkList import java.util.LinkedList; /** * addFirst(); * addLast(); * * * * getFirst();//獲取但不移除,如果 ...
  17. JAVA集合框架:[22]map案例二

    import java.util.HashMap; import java.util.Iterator; public class mapdemo2 { public static void main ...
  18. JAVA集合框架:[16]set集合知識點

    set:元素不可重複,是無序的. set接口和collection方法一致 |--HashSet:內部結構是哈希表,是不同步的. 如何保證該集合的元素唯一性呢? 通過對象的hashcode和equal ...
  19. JAVA集合框架:[13]List集合

    List集合是可以完成對元素的增刪改查 List: |--Vector:內部是數組數據結構,是同步的.增刪,查詢都很慢 |--ArrayList:內部是數組數據結構,是不同步的,替代了Vector.查 ...
  20. JAVA集合框架:[63]正規表達式練習

    package Test; public class Test1 { public static void main(String[] args) { // TODO Auto-generated m ...