Gecco は、Java 言語で開発された使いやすい軽量 Web クローラーです。Gecco Integriert jsoup、httpclient、fastjson、spring、htmlunit、redission ausgezeichneten フレームワークを使用して、いくつかの jQuery スタイル セレクターを設定するだけで、非常に迅速にクローラーを作成できます。 Gecco フレームワークは優れたスケーラビリティを備えており、オープンとクローズの設計原理に基づいたフレームワークで、クロージャを変更し、オープンを拡張します。同時にGecco は、非常にオープンな MIT オープン ソース プロトコルに基づいています。ユーザーである場合でも、Gecco 開発者を共同で改善したい場合でも、プル リクエストを歓迎します。クローラー フレームワークが気に入った場合は、スターを付けるかフォークしてください。
< dependency >
< groupId >com.geccocrawler</ groupId >
< artifactId >gecco</ artifactId >
< version >x.x.x</ version >
</ dependency >
httpclient、jsoup、fastjson、reflections、cglib、rhino、log4j、jmxutils、commons-lang3
@ Gecco ( matchUrl = "https://github.com/{user}/{project}" , pipelines = "consolePipeline" )
public class MyGithub implements HtmlBean {
private static final long serialVersionUID = - 7127412585200687225L ;
@ RequestParameter ( "user" )
private String user ;
@ RequestParameter ( "project" )
private String project ;
@ Text
@ HtmlField ( cssPath = ".pagehead-actions li:nth-child(2) .social-count" )
private String star ;
@ Text
@ HtmlField ( cssPath = ".pagehead-actions li:nth-child(3) .social-count" )
private String fork ;
@ Html
@ HtmlField ( cssPath = ".entry-content" )
private String readme ;
public String getReadme () {
return readme ;
}
public void setReadme ( String readme ) {
this . readme = readme ;
}
public String getUser () {
return user ;
}
public void setUser ( String user ) {
this . user = user ;
}
public String getProject () {
return project ;
}
public void setProject ( String project ) {
this . project = project ;
}
public String getStar () {
return star ;
}
public void setStar ( String star ) {
this . star = star ;
}
public String getFork () {
return fork ;
}
public void setFork ( String fork ) {
this . fork = fork ;
}
public static void main ( String [] args ) {
GeccoEngine . create ()
. classpath ( "com.geccocrawler.gecco.demo" )
. start ( "https://github.com/xtuhcy/gecco" )
. thread ( 1 )
. interval ( 2000 )
. loop ( true )
. mobile ( false )
. start ();
}
}
DynamicGecco の目的は、SpiderBean を定義せずにクロール ルールの実行時設定を実装することです。実際、原理はバイト コード プログラミングの使用、SpiderBean の動的生成ですが、カスタム GeccoClassLoader を使用してホット デプロイのルールも実現します。以下は単純なデモです。より複雑なデモは、以下の例 com.geccocrawler.gecco.demo.dynamic を参照してください。
次のコードは、クロール ルールの実行時構成を実装します。
DynamicGecco.html()
.gecco("https://github.com/{user}/{project}", "consolePipeline")
.requestField("request").request().build()
.stringField("user").requestParameter("user").build()
.stringField("project").requestParameter().build()
.stringField("star").csspath(".pagehead-actions li:nth-child(2) .social-count").text(false).build()
.stringField("fork").csspath(".pagehead-actions li:nth-child(3) .social-count").text().build()
.stringField("contributors").csspath("ul.numbers-summary > li:nth-child(4) > a").href().build()
.register();
GeccoEngine.create()
.classpath("com.geccocrawler.gecco.demo")
.start("https://github.com/xtuhcy/gecco")
.run();
DynamicGecco の方法は、従来の方法に比べてアノテーション コードが大幅に削減されていることがわかります。非常に優れている点は、DynamicGecco がルールの定義と変更の操作をサポートしていることです。
教您使用 java 爬虫 gecco 抓取 JD 全部商品信息(一)
教您使用 java 爬虫 gecco 抓取 JD 全部商品信息(二)
教您使用 java 爬虫 gecco 抓取 JD 全部商品信息(三)
集成 Htmlunit ダウンロード页面
爬虫類の监制御
完全な例、分页処理、結合春、mysql 入库
同様のツールのリストとそれらの比較方法は、次の場所で参照できます。
Web アーカイブ ソフトウェアの比較
Gecco 的公開展离不开大家支持,扫一扫请作者喝杯咖啡~
オープンソース プロトコル MIT に従ってください。