日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 為大家推薦一款非常好用的java寫的垂直爬蟲webmagic,力挺

為大家推薦一款非常好用的java寫的垂直爬蟲webmagic,力挺

來源:程序員人生   發布時間:2014-12-07 09:41:08 閱讀次數:7392次

webmagic官方介紹:http://blog.csdn.net/u010670689/article/details/41704239


本文目標:爬去網站的head內容,然后控制臺打印
webmagic版本:0.5.1
maven坐標:

<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-core</artifactId>
<version>0.5.1</version>
</dependency>
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-extension</artifactId>
<version>0.5.1</version>
</dependency>



1.實現自己的PageProcessor

pageprocessor是爬蟲的核心,可以定義爬蟲的爬取規則,我將PageProcessor的定制分為3個部份,分別是爬蟲的配置、頁面元素的抽取和鏈接的發現。
代碼:


package youling.studio;


import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.pipeline.ConsolePipeline;
import us.codecraft.webmagic.pipeline.JsonFilePipeline;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.processor.example.GithubRepoPageProcessor;


public class MyPageProcessor  implements PageProcessor {


    // 部份1:抓取網站的相干配置,包括編碼、抓取間隔、重試次數等
    private Site site = Site.me().setRetryTimes(3).setSleepTime(1000);


    // process是定制爬蟲邏輯的核心接口,在這里編寫抽取邏輯
    @Override
    public void process(Page page) {
        // 部份2:定義如何抽取頁面信息,并保存下來
    //  <h1>
//        <span class="link_title"><a href="/u010670689/article/details/41576647">
//        啟動hive metastore命令
//        </a></span>
//    </h1>
    //csdn文章標題的html代碼
        page.putField("title", page.getHtml().xpath("//h1/span[@class='link_title']/a/text()").toString());
        if (page.getResultItems().get("title") == null) {
            //skip this page
            page.setSkip(true);
        }


        // 部份3:從頁面發現后續的url地址來抓取
        //  <span class="link_title"><a href="/u010670689/article/details/41704239">
//        webmagic整體介紹
//        </a></span>
        page.addTargetRequests(page.getHtml().links().regex("(/u010670689/article/details/(w+))").all());
    }


    @Override
    public Site getSite() {
        return site;
    }


    public static void main(String[] args) {
        Spider.create(new MyPageProcessor())
                //從"https://github.com/code4craft"開始抓
                .addUrl("http://blog.csdn.net/u010670689?viewmode=contents")
                //保存到json文件里
                .addPipeline(new ConsolePipeline())
                //開啟5個線程抓取
                .thread(1)
                //啟動爬蟲
                .run();
    }
}




4.1.1 爬蟲的配置

第1部份關于爬蟲的配置,包括編碼、抓取間隔、超時時間、重試次數等,也包括1些摹擬的參數,例如User Agent、cookie,和代理的設置,我們會在第5章-“爬蟲的配置”里進行介紹。在這里我們先簡單設置1下:重試次數為3次,抓取間隔為1秒。

4.1.2 頁面元素的抽取

第2部份是爬蟲的核心部份:對下載到的Html頁面,你如何從中抽取到你想要的信息?WebMagic里主要使用了3種抽取技術:XPath、正則表達式和CSS選擇器。另外,對JSON格式的內容,可以使用JsonPath進行解析。

  1. XPath

    XPath本來是用于XML中獲得元素的1種查詢語言,但是用于Html也是比較方便的。例如:

     page.getHtml().xpath("//h1[@class='entry-title public']/strong/a/text()")
    

    這段代碼使用了XPath,它的意思是“查找所有class屬性為'entry-title public'的h1元素,并找到他的strong子節點的a子節點,并提取a節點的文本信息”。對應的Html是這模樣的:

    xpath-html

  2. CSS選擇器

    CSS選擇器是與XPath類似的語言。如果大家做過前端開發,肯定知道$('h1.entry-title')這類寫法的含義。客觀的說,它比XPath寫起來要簡單1些,但是如果寫復雜1點的抽取規則,就相對要麻煩1點。

  3. 正則表達式

    正則表達式則是1種通用的文本抽取語言。

     page.addTargetRequests(page.getHtml().links().regex("(https://github.com/w+/w+)").all());
    

    這段代碼就用到了正則表達式,它表示匹配所有"https://github.com/code4craft/webmagic"這樣的鏈接。

  4. JsonPath

    JsonPath是于XPath很類似的1個語言,它用于從Json中快速定位1條內容。WebMagic中使用的JsonPath格式可以參考這里:https://code.google.com/p/json-path/

4.1.3 鏈接的發現

有了處理頁面的邏輯,我們的爬蟲就接近完工了!

但是現在還有1個問題:1個站點的頁面是很多的,1開始我們不可能全部羅列出來,因而如何發現后續的鏈接,是1個爬蟲不可缺少的1部份。

page.addTargetRequests(page.getHtml().links().regex("(https://github.com/w+/w+)").all());

這段代碼的分為兩部份,page.getHtml().links().regex("(https://github.com/w+/w+)").all()用于獲得所有滿足"(https:/ /github.com/w+/w+)"這個正則表達式的鏈接,page.addTargetRequests()則將這些鏈接加入到待抓取的隊列中去。





其中代碼中的Pipeline可以定制,Scheduler,Downloader都是可以定制的,后面再介紹


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩三级免费观看 | 国产在线观看一区二区三区 | 久久久久久亚洲 | 成人在线毛片 | 久久精品国产一区二区电影 | chinesexxxx国产麻豆 | 国产精品毛片无码 | 操女人在线 | 久久免费看 | 国产精品大全 | 一区二区三区av在线 | 精品欧美一区二区久久久伦 | 国产精品自拍小视频 | www.亚洲一区 | 亚洲天堂偷拍 | 亚洲精品一区二区三 | 午夜精品在线 | 国产一级黄色片免费看 | 女人18毛片九区毛片在线 | 男女互操网站 | 黄色三级免费 | 国产v亚洲v天堂无码 | 国产免费看片 | 日本久久久久久久久 | 欧洲av一区 | 亚洲一区二区免费 | 亚洲一在线 | 在线看av的网址 | 懂色av一区二区 | 日韩精品在线观看视频 | 日本久久精品视频 | av网站免费看 | 在线观看日韩精品 | 国产色片在线观看 | 国产毛片精品国产一区二区三区 | 综合久久综合久久 | 成人欧美一区二区三区视频网页 | 亚洲色图第一页 | 国产精品99精品久久免费 | 国产日韩视频 | 97午夜|