セレン爬虫類の使用は、データをクロール

EDITORIAL

この記事はもともと数ヶ月前に書かれた、彼は忘れて忙しい忙しい弾力ました。
PS:もっと時々ではなく、何か遅延の事。
数ヶ月前、私は友人がグループは、データセレンを登るデータ、特定のサイトへの通常のアナログ固定アクセス、彼らはクロール気になる情報に登りたかったし、データ処理のうち、上昇したと述べた覚えています。
直接リッチテキストエディタに記事が事実を公開することを彼の需要が、これは爬虫類です。
実際には、これは、難しいことではありません自動化されたプロセスのUIで、始めましょう。

準備ツール/材料

1、Java言語
2、IDEA開発ツール
。3、jdk1.8
。4、(3.0超)セレンサーバースタンドアロン

ステップ

1、分解要件:

  • 主な焦点は、元の書式スタイルのニーズが保存されていることを確認することです。
  • 記事、すべて選択してコピーをクロールします
  • テキストコピーした後とにリッチテキストエディタに貼り付け

2、コードの実装のアイデア:

  • キーボードイベントシミュレーションCTRL + Aすべて選択
  • キーボードイベントシミュレーションCTRL + Cコピーします
  • 貼り付けキーボードイベントシミュレーションCTRL + V

図3に示すように、サンプル・コード

輸入org.junit.AfterClass。
輸入org.junit.BeforeClass。
輸入org.junit.Test;
輸入org.openqa.selenium.By;
輸入org.openqa.selenium.WebDriver;
輸入org.openqa.selenium.chrome.ChromeDriver; 

インポート持つjava.awt。* ;
輸入java.awt.event.KeyEventの。
輸入java.util.concurrent.TimeUnit。

/ ** 
 * @authorのrongrong 
 *セレン模拟访问网站爬虫操作代码示例
 * / 
パブリック クラスデモ{
     プライベート 静的webdriverをドライバー;
    静的 最終 int型MAX_TIMEOUT_IN_SECONDS = 5 ; 

    @BeforeClass 
    パブリック 静的 ボイド setUpBeforeClass()スロー例外{ 
        ドライバ = 新しいChromeDriverを(); 
        文字列のURL = "https://temai.snssdk.com/article/feed/index?id=6675245569071383053&subscribe=5501679303&source_type=28&content_type=1&create_user_id=34013&adid=__AID__&tt_group_id=6675245569071383053" 
        。driver.manage()ウィンドウ()(最大化)。
        driver.manage()タイムアウト()implicitlyWait(MAX_TIMEOUT_IN_SECONDS、TimeUnit.SECONDS)。
        driver.get(URL); 
    } 

    @AfterClass 
    公共の 静的な 無効tearDownAfterClass()はスロー例外{
         場合(!ドライバ= NULL ){ 
            (のSystem.out.printlnを "结束运行!" )。
            driver.quit(); 
        } 
    } 

    @Test 
    公共 ボイド試験()はスローInterruptedExceptionある{ 
        ロボットロボット = ヌル試す{ 
            ロボットを = 新しいロボット(); 
        } キャッチ(AWTExceptionのE1){ 
            e1.printStackTrace()。
        }
        robot.keyPress(KeyEvent.VK_CONTROL)。
        robot.keyPress(KeyEvent.VK_A)。
        robot.keyRelease(KeyEvent.VK_A)。
        Thread.sleep(
        robot.keyPress(KeyEvent.VK_V)。 2000 ); 
        robot.keyPress(KeyEvent.VK_C)。
        robot.keyRelease(KeyEvent.VK_C)。
        robot.keyRelease(KeyEvent.VK_CONTROL)。
        driver.get( "https://ueditor.baidu.com/website/onlinedemo.html" ); 
        Thread.sleep( 2000 ); 
        。driver.switchTo()フレーム( 0 )。
        driver.findElement(By.tagName( "ボディ" 。))をクリックします(); 
        robot.keyPress(KeyEvent.VK_CONTROL)。
        robot.keyRelease(KeyEvent.VK_V)。
        robot.keyRelease(KeyEvent.VK_CONTROL)。
        Thread.sleep( 2000 ); 
    } 


}

背中に書かれました

私は、特に次のような理由から、セレン爬虫類の使用はお勧めしません。

  • スロー:

あなたは爬虫類を実行するたびにブラウザを開く必要があり、初期化はまた、JSはたくさんのことをレンダリングするので、イメージをロードする必要があります。

  • あまりにも多くのリソースを取ります:

これは、原則は同じですが、開いているブラウザで、パラメータを検証する多くのサイトが、相手があなたが悪質なリクエストを訪問した場合、それはあなたの要求に行います見ることがヘッドレスブラウザを交換すると言われて、あなたがする必要があります物事のヘッドを交換するための要求を検討し、問題の複雑さが、行くと、コードを変更しなければならなかったどのくらい多くの知らなかった、トラブルが死んでいます。

  • ネットワーク上の要件が高くなります。

(例えば、CSS、JSや画像ファイルなど)あなたに無価値の可能な追加のドキュメントの数をロード。リソース(別のHTTPリクエストを使用して)と比較すると、本当に多くのトラフィックを生成することができ、必要があります。

おすすめ

転載: www.cnblogs.com/longronglang/p/10990593.html