java爬虫抓取网页数据(UI自动化月前写的一些事儿--)

优采云 发布时间: 2022-01-06 00:18

  java爬虫抓取网页数据(UI自动化月前写的一些事儿--)

  写在前面

  本来这个文章是几个月前写的,后来忙忘了。

  ps:事情太多有时会耽误事情。

  几个月前,记得群里有个朋友说要用selenium来爬取数据。关于爬取数据,我一般是模拟访问一些固定的网站,爬取我关心的信息,然后爬出来。数据被处理。

  他的要求是将文章直接导入富文本编辑器进行发布,其实这也是一种爬虫。

  其实这并不难,就是UI自动化的过程,我们开始吧。

  准备工具/原材料

  1、java 语言

  2、IDEA 开发工具

  3、jdk1.8

  4、selenium-server-standalone (3.0 及以上)

  步骤1、需求分解:2、代码实现思路: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 请求)相比,这可能会产生更多的流量。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线