亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

利用selenium爬蟲抓取數(shù)據(jù)的基礎(chǔ)教程

 更新時間:2019年06月10日 11:46:48   作者:Refain  
這篇文章主要給大家介紹了關(guān)于如何利用selenium爬蟲抓取數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用selenium具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

寫在前面

本來這篇文章該幾個月前寫的,后來忙著忙著就給忘記了。

ps:事多有時候反倒會耽誤事。

幾個月前,記得群里一朋友說想用selenium去爬數(shù)據(jù),關(guān)于爬數(shù)據(jù),一般是模擬訪問某些固定網(wǎng)站,將自己關(guān)注的信息進(jìn)行爬取,然后再將爬出的數(shù)據(jù)進(jìn)行處理。

他的需求是將文章直接導(dǎo)入到富文本編輯器去發(fā)布,其實這也是爬蟲中的一種。

其實這也并不難,就是UI自動化的過程,下面讓我們開始吧。

準(zhǔn)備工具/原料

1、java語言

2、IDEA開發(fā)工具

3、jdk1.8

4、selenium-server-standalone(3.0以上版本)

步驟

1、分解需求:

需求重點主要是要保證原文格式樣式都保留:

將要爬取文章,全選并復(fù)制

將復(fù)制后的文本,粘貼到富文本編輯器中即可

2、代碼實現(xiàn)思路:

鍵盤事件模擬CTRL+A全選

鍵盤事件模擬CTRL+C復(fù)制

鍵盤事件模擬CTRL+V粘貼

3、實例代碼

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import java.awt.*;
import java.awt.event.KeyEvent;
import java.util.concurrent.TimeUnit;

/**
 * @author rongrong
 * Selenium模擬訪問網(wǎng)站爬蟲操作代碼示例
 */
public class Demo {
 private static WebDriver driver;
 static final int MAX_TIMEOUT_IN_SECONDS = 5;

 @BeforeClass
 public static void setUpBeforeClass() throws Exception {
  driver = new ChromeDriver();
  String 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().window().maximize();
  driver.manage().timeouts().implicitlyWait(MAX_TIMEOUT_IN_SECONDS, TimeUnit.SECONDS);
  driver.get(url);
 }

 @AfterClass
 public static void tearDownAfterClass() throws Exception {
  if (driver != null) {
   System.out.println("運(yùn)行結(jié)束!");
   driver.quit();
  }
 }

 @Test
 public void test() throws InterruptedException {
  Robot robot = null;
  try {
   robot = new Robot();
  } catch (AWTException e1) {
   e1.printStackTrace();
  }
  robot.keyPress(KeyEvent.VK_CONTROL);
  robot.keyPress(KeyEvent.VK_A);
  robot.keyRelease(KeyEvent.VK_A);
  Thread.sleep(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().frame(0);
  driver.findElement(By.tagName("body")).click();
  robot.keyPress(KeyEvent.VK_CONTROL);
  robot.keyPress(KeyEvent.VK_V);
  robot.keyRelease(KeyEvent.VK_V);
  robot.keyRelease(KeyEvent.VK_CONTROL);
  Thread.sleep(2000);
 }
}

寫在后面

筆者并不是特別建議使用selenium做爬蟲,原因如下:

速度慢:

每次運(yùn)行爬蟲都要打開一個瀏覽器,初始化還需要加載圖片、JS渲染等等一大堆東西;

占用資源太多:

有人說,把換成無頭瀏覽器,原理都是一樣的,都是打開瀏覽器,而且很多網(wǎng)站會驗證參數(shù),如果對方看到你惡意請求訪問,會辦了你的請求,然后你又要考慮更換請求頭的事情,事情復(fù)雜程度不知道多了多少,還得去改代碼,麻煩死了。

對網(wǎng)絡(luò)的要求會更高:

加載了很多可能對您沒有價值的補(bǔ)充文件(如css,js和圖像文件)。 與真正需要的資源(使用單獨(dú)的HTTP請求)相比,這可能會產(chǎn)生更多的流量。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Python入門變量的定義及類型理解

    Python入門變量的定義及類型理解

    本文適合編程語言零基礎(chǔ)的初學(xué)者,有打算轉(zhuǎn)行學(xué)習(xí)python的可以添加關(guān)注,后續(xù)小編將會把自己轉(zhuǎn)行學(xué)pyhton語言以來的所有筆記,和工作中總結(jié)的一些開發(fā)經(jīng)驗分享給大家
    2021-09-09
  • NumPy迭代數(shù)組的實現(xiàn)

    NumPy迭代數(shù)組的實現(xiàn)

    本文主要介紹了NumPy迭代數(shù)組的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Selenium python時間控件輸入問題解決方案

    Selenium python時間控件輸入問題解決方案

    這篇文章主要介紹了Selenium python時間控件輸入問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • Pyqt5實現(xiàn)英文學(xué)習(xí)詞典

    Pyqt5實現(xiàn)英文學(xué)習(xí)詞典

    這篇文章主要為大家詳細(xì)介紹了Pyqt5實現(xiàn)英文學(xué)習(xí)詞典的相關(guān)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python?matplotlib可視化之繪制韋恩圖

    Python?matplotlib可視化之繪制韋恩圖

    韋恩圖可以清晰的反映不同組數(shù)據(jù)共有和各自獨(dú)有的部分,本文將詳細(xì)為大家介紹如下兩種python繪制venn圖策略:matplotlib_venn和pyvenn,需要的可以參考一下
    2022-02-02
  • python2.7使用plotly繪制本地散點圖和折線圖

    python2.7使用plotly繪制本地散點圖和折線圖

    這篇文章主要為大家詳細(xì)介紹了python2.7使用plotly繪制本地散點圖和折線圖實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python中的 any() 函數(shù)和 all() 函數(shù)

    Python中的 any() 函數(shù)和 all() 函數(shù)

    這篇文章主要介紹了Python中的 any() 函數(shù)和 all() 函數(shù),文章基于Python的相關(guān)資料展開對 any 和 all() 函數(shù)的語法詳細(xì)內(nèi)容,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-04-04
  • python順序的讀取文件夾下名稱有序的文件方法

    python順序的讀取文件夾下名稱有序的文件方法

    今天小編就為大家分享一篇python順序的讀取文件夾下名稱有序的文件方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python?Type?Hints?學(xué)習(xí)之從入門到實踐

    Python?Type?Hints?學(xué)習(xí)之從入門到實踐

    Type?Hints(類型注解)進(jìn)一步強(qiáng)化了Python是一門強(qiáng)類型語言的特性,它在?Python3.5?中第一次被引入。使用Type?Hints可以讓我們編寫出帶有類型的Python代碼,本文將詳細(xì)介紹一下Type?Hints,感興趣的小伙伴可以關(guān)注一下
    2021-11-11
  • python @classmethod 的使用場合詳解

    python @classmethod 的使用場合詳解

    這篇文章主要介紹了python @classmethod 的使用場合詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08

最新評論