原本這篇文章該幾個月前寫的,後來忙着忙着就給忘記了。
ps:事多有時候反倒會耽誤事。
幾個月前,記得羣裏一朋友說想用selenium去爬數據,關於爬數據,通常是模擬訪問某些固定網站,將本身關注的信息進行爬取,而後再將爬出的數據進行處理。
他的需求是將文章直接導入到富文本編輯器去發佈,其實這也是爬蟲中的一種。
其實這也並不難,就是UI自動化的過程,下面讓咱們開始吧。css
一、java語言
二、IDEA開發工具
三、jdk1.8
四、selenium-server-standalone(3.0以上版本)html
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作爬蟲,緣由以下:java
每次運行爬蟲都要打開一個瀏覽器,初始化還須要加載圖片、JS渲染等等一大堆東西;web
有人說,把換成無頭瀏覽器,原理都是同樣的,都是打開瀏覽器,並且不少網站會驗證參數,若是對方看到你惡意請求訪問,會辦了你的請求,而後你又要考慮更換請求頭的事情,事情複雜程度不知道多了多少,還得去改代碼,麻煩死了。chrome
加載了不少可能對您沒有價值的補充文件(如css,js和圖像文件)。 與真正須要的資源(使用單獨的HTTP請求)相比,這可能會產生更多的流量。瀏覽器