中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用selenium爬蟲抓取數據的基礎教程

發布時間:2020-09-20 17:18:54 來源:腳本之家 閱讀:127 作者:Refain 欄目:開發技術

寫在前面

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

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

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

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

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

準備工具/原料

1、java語言

2、IDEA開發工具

3、jdk1.8

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

步驟

1、分解需求:

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

將要爬取文章,全選并復制

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

2、代碼實現思路:

鍵盤事件模擬CTRL+A全選

鍵盤事件模擬CTRL+C復制

鍵盤事件模擬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模擬訪問網站爬蟲操作代碼示例
 */
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("運行結束!");
   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做爬蟲,原因如下:

速度慢:

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

占用資源太多:

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

對網絡的要求會更高:

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长丰县| 汝州市| 恭城| 岚皋县| 泰州市| 峡江县| 崇礼县| 定州市| 富川| 田东县| 龙州县| 白朗县| 阿勒泰市| 安西县| 青州市| 平昌县| 加查县| 奎屯市| 中卫市| 砚山县| 盈江县| 夏河县| 高邮市| 荔波县| 建瓯市| 黎平县| 庆安县| 洛南县| 惠安县| 长乐市| 龙陵县| 丹东市| 洪洞县| 普宁市| 铜川市| 台南市| 宾川县| 古浪县| 西昌市| 宣威市| 武宁县|