Javaネットワーク爬虫実操(1)

4317 ワード

皆さん、こんにちは.爬虫類といえば、多くのプログラマーが聞いたことがあると思います.簡単に言えば、ネット上の情報を自動的に大量につかむプログラムです.次にgithubの前の爬虫類フレームワークNetDiscoveryと組み合わせて実証します.
1)なぜフレームを使うのですか.
フレームワークは、目標タスクに直接関連していない基礎的な作業を処理するのに役立ち、目標タスクに集中させます.特に爬虫類初心者にとっては、余計なことを心配することなく、爬虫類を操作することによる効果と達成感をすぐに味わうことができます.ドアに入って、フレームワークに依存しないで独立してゼロから爬虫プログラムを書いてみて、それから他の人が構築した爬虫フレームワークを研究して、爬虫フレームワークのソースコードを読むことができてから、あなたはすでにネット爬虫に対して一定の研究があると信じています.
2)プレゼンテーション環境
Java JDK8、IntelliJ IDEA、Google Chrome
爬虫類フレームNetDiscovery:github.com/fengzhizi 71...
3)爬虫類の特定
ある人材募集ネットから指定されたポジション情報を取得する:会社名、ポジション名
4)人肉分析ページ
chromeブラウザでターゲットページを開き、クエリー条件を入力し、ポジション情報を表示するページを見つけます.
赤い枠の位置の文字は、プログラムを書いて自動的に取得する計画の情報です.
この一環の分析の仕事はとても重要で、私達はつかむ目標のホームページ、目標のデータに対して明確な理解があります.人の目はすでにこれらの情報を見ることができて、次はプログラムを書いてコンピュータに私たちを捕まえるように教えます.
5)Javaエンジニアリングの作成
gradleのjavaプロジェクトを作成します.
プロジェクトに爬虫類フレームNetDiscoveryの2つのjarパッケージを追加し、現在のバージョンは0.0.9.3で、バージョンは高くありませんが、バージョンの更新は反復が速く、成長力のあるフレームワークだと信じています.
group 'com.sinkinka'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    maven{url 'http://maven.aliyun.com/nexus/content/groups/public/'}
    mavenCentral()
    jcenter();
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'

    implementation 'com.cv4j.netdiscovery:netdiscovery-core:0.0.9.3'
    implementation 'com.cv4j.netdiscovery:netdiscovery-extra:0.0.9.3'
}


ダウンロードできない場合は、アリクラウドミラーアドレスを付けてください.
maven.aliyun.com/nexus/conte…
6)コード実装
参照フレームワークのexampleモジュールのサンプルコードと、github.com/fengzhizi 71...
  • mainメソッドのエントリクラスを作成し、mainで爬虫類
  • を起動します.
  • ターゲットページの解析にはparserインタフェースを実現するクラス
  • を作成する必要がある.
  • html文字列からターゲットコンテンツをキャプチャするには、xpath、jsoup、正規表現などの
  • の方法がある.
    Javaのmainメソッドには、次のコードが記述されています.
    package com.sinkinka;
    
    import com.cv4j.netdiscovery.core.Spider;
    import com.sinkinka.parser.TestParser;
    
    public class TestSpider {
        public static void main(String[] args) {
    
            //         ,           
            String url = "http://www.szrc.cn/HrMarket/WLZP/ZP/0/%E6%95%B0%E6%8D%AE";
    
            //  NetDiscovery,        parser              
            Spider.create()
                    .name("spider-1")         //     
                    .url(url)
                    .parser(new TestParser())  //parser 
                    .run();
        }
    }
    

    TestParserクラスのコード:
    package com.sinkinka.parser;
    
    import com.cv4j.netdiscovery.core.domain.Page;
    import com.cv4j.netdiscovery.core.parser.Parser;
    import com.cv4j.netdiscovery.core.parser.selector.Selectable;
    import java.util.List;
    
    /**
     *           
     */
    public class TestParser implements Parser {
    
        @Override
        public void process(Page page) {
    
            String xpathStr = "//*[@id=\"grid\"]/div/div[1]/table/tbody/tr";
            List trList = page.getHtml().xpath(xpathStr).nodes();
    
            for(Selectable tr : trList) {
                String companyName = tr.xpath("//td[@class='td_companyName']/text()").get();
                String positionName = tr.xpath("//td[@class='td_positionName']/a/text()").get();
    
                if(null != companyName && null != positionName) {
                    System.out.println(companyName+"------"+positionName);
                }
            }
       }
    }
    

    実行結果:
    7)まとめ
    本稿では,爬虫類フレームワークに依存して,ウェブページ情報をキャプチャする方法をできるだけ簡単なコードで実証した.その後、より多くの実操的な内容を発表して参考にします.
    NetDiscovery爬虫類フレームワークの基本原理図
    上一篇:Java网络爬虫实操(2)