JAVA+Selenium+Chrome+Chromedriver 模拟浏览器

linux 的环境准备

安装 google-chrome
yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
下载 Chromedriver
地址:http://npm.taobao.org/mirrors/chromedriver/ (根据google-chrome -version找对应版本)
下载后放到根目录,注意要给 chromedriver 可执行权限:chmod 777 /chromedriver

windows 的环境准备

安装 google-chrome 浏览器
下载 Chromedriver
地址:http://npm.taobao.org/mirrors/chromedriver/ (根据google-chrome -version找对应版本)

JAVA Maven

maven 导入包
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>2.33.0</version>
</dependency>

工具类例子

package c.o.v;

import org.apache.commons.lang3.StringUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

public class YXMUtil {

    public static void main(String[] args) {
        get("https://mall.q-gp.com/share/product?skuNo=366936136878081");
    }

    public static Map<String, String> get(String url) {
        // 参数配置
        System.setProperty("webdriver.chrome.driver", "/chromedriver.exe");
        WebDriver driver;
        ChromeOptions option = new ChromeOptions();
        option.addArguments("headless"); // 无界面参数
        option.addArguments("no-sandbox"); // 禁用沙盒
        // 通过ChromeOptions的setExperimentalOption方法,传下面两个参数来禁止掉谷歌受自动化控制的信息栏
        option.setExperimentalOptions("useAutomationExtension", false);
        option.setExperimentalOptions("excludeSwitches", Collections.singletonList("enable-automation"));
        driver = new ChromeDriver(option);
        driver.get(url);
        String title = "";
        String num = "";
        String img = "";
        long time = System.currentTimeMillis();
        while (StringUtils.isEmpty(img) || StringUtils.isEmpty(title) || StringUtils.isEmpty(num)) {
            img = driver.findElement(By.className("cr-image--img")).getAttribute("src");
            title = driver.findElement(By.className("title")).getText();
            num = driver.findElement(By.className("num")).getText();
            if (System.currentTimeMillis() - time > 5000) {
                System.out.println("获取超时,已结束");
                driver.quit();
                return null;
            }
            try {
                Thread.sleep(500);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        System.out.println("标题:" + title);
        System.out.println("价格:" + num);
        System.out.println("图片:" + img);
        driver.quit();
        Map<String, String> map = new HashMap();
        map.put("title", title);
        map.put("num", num);
        map.put("img", img);
        return map;
    }
}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Selenium 是一个用于自动化测试的工具,它可以通过调用各种浏览器来执行测试任务。在该框架中,可以使用 Selenium WebDriver浏览器进行控制,并获得其渲染的页面内容。 通过 Java Selenium,可以编写代码来搜索并解析搜索结果。首先,需要创建一个 WebDriver 对象并指定所要使用的浏览器。例如,可以通过如下代码创建一个 Chrome 浏览器的实例: ```java System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"); WebDriver driver = new ChromeDriver(); ``` 接下来,可以使用 WebDriver 对象访问指定网站并模拟搜索操作。例如,可以使用如下代码在谷歌搜索中输入关键字并提交搜索: ```java driver.get("https://www.google.com"); WebElement searchInput = driver.findElement(By.name("q")); searchInput.sendKeys("Java Selenium"); searchInput.submit(); ``` 然后,可以使用 WebDriver 对象获取搜索结果页面的源代码或特定元素的文本。例如,可以使用如下代码获取搜索结果中的标题和描述: ```java List<WebElement> searchResults = driver.findElements(By.xpath("//div[@class='g']")); for (WebElement result : searchResults) { WebElement titleElement = result.findElement(By.tagName("h3")); WebElement descriptionElement = result.findElement(By.className("s")); String title = titleElement.getText(); String description = descriptionElement.getText(); System.out.println("标题:" + title); System.out.println("描述:" + description); } ``` 以上代码通过定位搜索结果的特定元素,提取了标题和描述的文本,并输出到控制台。 总结来说,Java Selenium 可以通过调用浏览器模拟搜索操作,并通过解析页面内容来获取搜索结果。以上代码只是简单示例,实际应用中可能需要根据具体情况进行更多的定位和解析操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值