多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

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

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

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

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都是可以定制的,后面再介紹


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 另类毛片 | 欧美淫 | 欧美日韩一区二区亚洲 | 欧美综合伊人久久 | 欧美一区二区三区在线观看 | 国产午夜精品片一区二区三区 | 国产女主播一区二区在线观看 | 一级特黄女人生活片 | 成年视频国产免费观看 | 亚洲欧美综合网 | 亚洲成人在线视频网站 | 国内自拍网站 | 亚欧成人中文字幕一区 | 日本xxx护士21| 国产一级一片 | yellow字幕网在线91zmw | 亚洲欧美激情精品一区二区 | 欧美大屁股精品毛片视频 | 亚洲 欧美综合小说区图片区 | 国产一区二区自拍视频 | 久久久久久极精品久久久 | 日本高清www午夜视频 | 欧美日韩在线精品成人综合网 | 国产不卡一区二区视频免费 | 国产欧美日韩精品高清二区综合区 | 毛片毛片毛片毛片出来毛片 | 九色地址 | 91久久亚洲精品一区二区 | 亚洲欧美日韩高清 | 日日夜夜天天久久 | 久草免费网站 | 亚洲国产成人久久综合区 | 欧美极品video粗暴 | 日韩城人网站 | 在线观看av网站永久 | 最近的免费中文字幕1 | 中文有码 | 欧美一区二区三区在线观看免费 | 中文字幕网址 | 三级爱爱 | 亚洲性色永久网址 |