基於webmagic框架的多主題爬蟲關鍵詞切換

2021-09-23 06:02:18 字數 2507 閱讀 1059

eg:我們需要爬取同程旅遊網杭州的旅遊景點資訊,url是:

eg:同程旅遊網從杭州到北京的國內遊,url是:

第三頁是:

浙江++消防&pn=10

浙江++消防&pn=20

兩種方式的配置舉例如下:

filters:

searchfilter:

kwfixvalue: [ 浙江, 江蘇, 上海, 北京, 天津 ]

kwvalue: [ 火災, 坍塌, **, 事故, 安全, ** ]

起始城市id

起始城市名稱

目的地id

目的地名稱

0510

無錫0571

杭州001

北京021

南京0519

常州0996

烏魯木齊

public class keywordoptions 

public long getcurrentpage()

public void setcurrentpage(long currentpage)

public integer getcurrentfixindex()

public void setcurrentfixindex(integer currentfixindex)

public integer getcurrentindex()

public void setcurrentindex(integer currentindex)

public string getkwfixvalue()

public void setkwfixvalue(string kwfixvalue)

public string getkwvalue()

public void setkwvalue(string kwvalue)

}

private boolean nextkeyword(keywordoptions ko)  else  else 

if (ko.getcurrentindex() >= kwsize - 1) else

return true;

}} else

return true;}}

}

其中根據keywordoptions物件拼接url的方法如下,將該方法設為public,以便後續根據不同拼接規則可以繼承重寫

public string kotourl(keywordoptions ko) else if (ko.getkwvalue() == null && ko.getkwfixvalue() == null)  else  catch (unsupportedencodingexception var5) 

} else

}if (ko.getkwfixvalue() != null) catch (unsupportedencodingexception var4)

} else

}return builder.tostring();

}}

最後得到下一列表頁請求(封裝url)

public synchronized request nextlistpage(keywordoptions ko)  else  else 

} else

}} else

}

public void process(page page) 

//解析列表頁,後續業務會重寫processlist(page)方法

if (this.processlist(page)) ", page.geturl());

this.listaddlock = false;

} else ", page.geturl());

}//每個list request中儲存keywordoptions例項

keywordoptions ko = (keywordoptions)json.parseobject((string)page.getrequest().getextra("ko"), keywordoptions.class);

if (ko != null)

}//獲取下一列表頁

request listpage = this.nextlistpage(ko);

if (listpage != null)

} else

try catch (exception var7) , error:{}", new object);

}resultitems items = page.getresultitems();

string keyword = (string)page.getrequest().getextra("kw");

if (keyword == null)

if (keyword != null) }}

}

基於webmagic爬蟲框架的專案記錄

1 為什麼選定了webmagic?剛開始做的時候採用的是 httpclient htmlparser dom4j,主要說下為什麼使用了dom4j,現在的webmagic也是採用了dom4j,這裡主要是需要解析乙個 這個 的位址比較特殊,翻頁位址一次性儲存到了js方法裡,普通的html節點無法獲取到,...

基於WebMagic的CSDN部落格爬蟲

剛入職沒有多久,開發任務不是太重,很多功能的開發不能全部參與,閒暇之餘,mentor給了乙個小的開發任務 把美周內部共享的電子書全部爬取下來 其實剛接到這個任務不知道怎麼入手,便查了相關的爬蟲工具,如nutch heritrix crawler4j webmagic等等。其中webmagic是國人黃...

基於多Pagetab的外掛程式系統框架規劃

作了長時間的mis系統,對於業務本身的理解對於乙個mis系統來說是至關重要的,使用者對於系統的操作性,簡便性的要求也越來越強烈,同時,對於各種自定義的要求也越來越緊迫。使用者希望自己制定顯示字段,自己制定流程。而且要同時操作多個模組。傳統意義上的程式,通常要開啟多個系統,同時操作多個不同介面。為了滿...