成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

用JAVA做一個(gè)爬蟲程序——Gecco

Tony / 1909人閱讀

摘要:是一個(gè)開源的簡(jiǎn)單的爬蟲框架主要是通過將獲取的網(wǎng)頁信息封裝成來進(jìn)行爬取信息。作者也是一個(gè)新手。這篇文章只是提供一個(gè)入門的思路。開啟多少個(gè)線程抓取隔多長時(shí)間抓取次部分。是用來抓取元素的連接是指獲取得到的內(nèi)容。并且這個(gè)類需要實(shí)現(xiàn)。

Gecco是一個(gè)開源的簡(jiǎn)單的java爬蟲框架
主要是通過將獲取的網(wǎng)頁信息封裝成HtmlBean來進(jìn)行爬取信息。
作者也是一個(gè)新手。這篇文章只是提供一個(gè)入門的思路。
如果有不對(duì)的地方,還望指正。
咱們來爬取一下明星的信息。http://ku.ent.sina.com.cn/sta...
一些解釋性的東西我大都寫到注釋里了。

1、入口程序

public class StarIndexPage{
    public static void main(String[] args) {
    String url = "http://ku.ent.sina.com.cn/star/search&page_no=1"; //想要爬取的網(wǎng)站的首頁地址
    HttpGetRequest start = new HttpGetRequest(url); //獲取網(wǎng)站請(qǐng)求
    start.setCharset("UTF-8");
    GeccoEngine.create() //創(chuàng)建搜索引擎
               .classpath("com.yue.gecco") //要搜索的包名,會(huì)自動(dòng)搜索該包下,含@Gecco注解的文件。
               .start(start)   
               .thread(5)//開啟多少個(gè)線程抓取
               .interval(2000) //隔多長時(shí)間抓取1次
               .run();
     }
}

2、HtmlBean部分。Gecco用到的注解部分很多。

@Gecco(matchUrl = "http://ku.ent.sina.com.cn/star/search&page_no={page}",pipelines {"consolePipeline","starIndexPagePipeline"})
//matchUrl是爬取相匹配的url路徑,然后將獲取到的HtmlBean輸出到相應(yīng)的管道(pipelines)進(jìn)行處理。這里的管道是可以自定義的。
public class StarIndexPage implements HtmlBean {

private static final long serialVersionUID = 1225018257932399804L;

@Request   
private HttpRequest request;

//url中的page參數(shù)
@RequestParameter
private String  page;


//首頁中的明星板塊的集合,li的集合
@HtmlField(cssPath = "#dataListInner > ul >li")
private List lsStarDetail;
//@HtmlField(cssPath = "#dataListInner > ul >li")是用來抓取網(wǎng)頁中的相應(yīng)網(wǎng)頁數(shù)據(jù),csspath是jQuery的形式。
//cssPath獲取小技巧:用Chrome瀏覽器打開需要抓取的網(wǎng)頁,按F12進(jìn)入發(fā)者模式。然后在瀏覽器右側(cè)選中該元素,鼠標(biāo)右鍵選擇Copy–Copy selector,即可獲得該元素的cssPath

//當(dāng)前的頁碼,如果當(dāng)前的是有很多頁碼的話,可以通過獲取當(dāng)前頁碼還有總頁碼,為繼續(xù)抓取下一頁做準(zhǔn)備
//@Text是指抓取網(wǎng)頁中的文本部分。@Html是指抓取Html代碼。@Href是用來抓取元素的連接 @Ajax是指獲取Ajax得到的內(nèi)容。
@Text
@HtmlField(cssPath = "#dataListInner > div > ul > li.curr a")
private int currPageNum;

    //相應(yīng)的Getter和Setter方法...省略
}

StarDetail的HtmlBean部分

public class StarDetail implements HtmlBean{

    /*//明星的照片
    @Image("src")
    @HtmlField(cssPath = "a > img")
    prie String PhotoString;*/

    //明星的名字
    @Html
    @HtmlField(cssPath ="div > div > h4")
    private String  starNameHtml;

    //明星的性別
    @Text
    @HtmlField(cssPath = "div > p:nth-child(2)")
    private  String starSex;

    //明星的職業(yè)
    @Html
    @HtmlField(cssPath = "div > p:nth-child(3)")
    private String professionHtml;

    //明星的國籍
    @Text
    @HtmlField(cssPath = " div > p:nth-child(4)")
    private String  nationality;

    //明星的出生日期
    @Text
    @HtmlField(cssPath = "div > p.special")
    private String birthday;

    //明星的星座
    @Text
    @HtmlField(cssPath = "div > p:nth-child(6)>a")
    private String constellation;

    //明星的身高
    @Text
    @HtmlField(cssPath = "div > p:nth-child(7)")
    private String height;

...省略相應(yīng)的set和get方法...
}

3、相應(yīng)的pipeline部分。這部分主要是對(duì)獲取的網(wǎng)頁元素進(jìn)行業(yè)務(wù)處理。也可以對(duì)數(shù)據(jù)進(jìn)行持久化。

@PipelineName("starIndexPagePipeline") 
 //@pipelineName 標(biāo)簽指定了pipline的名字。并且pipeline這個(gè)類需要實(shí)現(xiàn)Pipleline。
public class StarIndexPagePipeline implements Pipeline {

    @Override
    public void process(StarIndexPage starIndexPage) {

        List lsStarDetail = starIndexPage.getLsStarDetail();

        StringBuilder inputText =  new StringBuilder();

        for (StarDetail starDetail :lsStarDetail){
           String professionHtml=starDetail.getProfessionHtml();
           String starNameHtml=starDetail.getStarNameHtml();
            Document docName=Jsoup.parse(starNameHtml);
            String starName=docName.getElementsByTag("a").attr("title").trim();

            String starSex = starDetail.getStarSex().trim();
            Document doc = Jsoup.parse(professionHtml);
            String profession="未知"; //有不含a標(biāo)簽的,不含a標(biāo)簽的都是未知的
            if(professionHtml.indexOf("

解析工具推薦
Jsoup
中文文檔:http://www.open-open.com/jsoup/
jsoup是一個(gè)解析Html的開源工具。

其他可供參考:官方例子:http://www.geccocrawler.com/d...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/67317.html

相關(guān)文章

  • Gecco的網(wǎng)絡(luò)爬蟲例子

    摘要:到了這個(gè)時(shí)候,我們已經(jīng)可以把京東的分類首頁的手機(jī)模塊給抓取下來,并且保存成。 GeccoSpider爬蟲例子 前些天,想要用爬蟲抓取點(diǎn)東西,但是網(wǎng)上很多爬蟲都是使用python語言的,本人只會(huì)java,因此,只能找相關(guān)java的爬蟲資料,在開源中國的看到國內(nèi)的大神寫的一個(gè)開源的爬蟲框架,并下源碼研究了一下,發(fā)現(xiàn)跟官網(wǎng)描述的一樣,夠簡(jiǎn)單,簡(jiǎn)潔易用!有興趣的朋友可以到官網(wǎng)了解下! 我這個(gè)例...

    raoyi 評(píng)論0 收藏0
  • Gecco的網(wǎng)絡(luò)爬蟲例子

    摘要:到了這個(gè)時(shí)候,我們已經(jīng)可以把京東的分類首頁的手機(jī)模塊給抓取下來,并且保存成。 GeccoSpider爬蟲例子 前些天,想要用爬蟲抓取點(diǎn)東西,但是網(wǎng)上很多爬蟲都是使用python語言的,本人只會(huì)java,因此,只能找相關(guān)java的爬蟲資料,在開源中國的看到國內(nèi)的大神寫的一個(gè)開源的爬蟲框架,并下源碼研究了一下,發(fā)現(xiàn)跟官網(wǎng)描述的一樣,夠簡(jiǎn)單,簡(jiǎn)潔易用!有興趣的朋友可以到官網(wǎng)了解下! 我這個(gè)例...

    Hydrogen 評(píng)論0 收藏0
  • cockroach 爬蟲:又一個(gè) java 爬蟲實(shí)現(xiàn)

    摘要:爬蟲又一個(gè)爬蟲實(shí)現(xiàn)原文簡(jiǎn)介小強(qiáng)當(dāng)時(shí)不知道為啥選了這么個(gè)名字,又長又難記,導(dǎo)致編碼的過程中因?yàn)閱卧~的拼寫問題耽誤了好長時(shí)間。我是一個(gè)小強(qiáng)爬蟲線程數(shù)健壯說到健壯,這里主要體現(xiàn)在以下幾個(gè)方面應(yīng)對(duì)封鎖這里我們使用動(dòng)態(tài)代理來解決這個(gè)問題。 cockroach 爬蟲:又一個(gè) java 爬蟲實(shí)現(xiàn) 原文 簡(jiǎn)介 cockroach[小強(qiáng)] 當(dāng)時(shí)不知道為啥選了這么個(gè)名字,又長又難記,導(dǎo)致編碼的過程中因?yàn)閱?..

    liangzai_cool 評(píng)論0 收藏0
  • Java爬蟲之利Jsoup自制簡(jiǎn)單的搜索引擎

    摘要:的官方網(wǎng)址為,其使用手冊(cè)網(wǎng)址為本次分享將實(shí)現(xiàn)的功能為利用爬取某個(gè)搜索詞語暫僅限英文的百度百科的介紹部分,具體的功能介紹可以參考博客爬蟲自制簡(jiǎn)單的搜索引擎。 ??Jsoup 是一款Java 的HTML解析器,可直接解析某個(gè)URL地址、HTML文本內(nèi)容。它提供了一套非常省力的API,可通過DOM,CSS以及類似于jQuery的操作方法來取出和操作數(shù)據(jù)。Jsoup的官方網(wǎng)址為: https:...

    GHOST_349178 評(píng)論0 收藏0
  • 后端技術(shù) - 收藏集 - 掘金

    摘要:理解迭代對(duì)象迭代器生成器后端掘金本文源自作者的一篇博文,原文是,俺寫的這篇文章是按照自己的理解做的參考翻譯。比較的是兩個(gè)對(duì)象的內(nèi)容是后端掘金黑魔法之協(xié)程異步后端掘金本文為作者原創(chuàng),轉(zhuǎn)載請(qǐng)先與作者聯(lián)系。 完全理解關(guān)鍵字with與上下文管理器 - 掘金如果你有閱讀源碼的習(xí)慣,可能會(huì)看到一些優(yōu)秀的代碼經(jīng)常出現(xiàn)帶有 with 關(guān)鍵字的語句,它通常用在什么場(chǎng)景呢?今天就來說說 with 和 上下...

    oujie 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<