欢迎光临散文网 会员登陆 & 注册

基于Selenium+java的网页爬虫

2023-05-27 15:52 作者:外号不可能是老眯  | 我要投稿

1.使用selenium ide录制

 


图1 selenium ide

 

2. 导出为java文件

 

图2 selenium export

 

3.修改代码

package com.test;

 

// Generated by Selenium IDE

import java.util.concurrent.TimeUnit;

import org.junit.Test;

import org.junit.Before;

import org.junit.After;

import static org.junit.Assert.*;

import static org.hamcrest.CoreMatchers.is;

import static org.hamcrest.core.IsNot.not;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.openqa.selenium.remote.RemoteWebDriver;

import org.openqa.selenium.remote.DesiredCapabilities;

import org.openqa.selenium.Dimension;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.interactions.Actions;

import org.openqa.selenium.support.ui.ExpectedConditions;

import org.openqa.selenium.support.ui.WebDriverWait;

import org.openqa.selenium.JavascriptExecutor;

import org.openqa.selenium.Alert;

import org.openqa.selenium.Keys;

import java.util.*;

import java.net.MalformedURLException;

import java.net.URL;

import java.io.File;

import java.io.PrintWriter;

import java.io.IOException;

 

 

public class JigouTest {

File outfile = new File("D:\\Desktop\\软件测试王广阔20201008370\\实验2\\czxsy2.txt");

  private WebDriver driver;

  private Map<String, Object> vars;

  JavascriptExecutor js;

  @Before

  public void setUp() {

System.setProperty("webdriver.firefox.bin", "D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");

System.setProperty("webdriver.gecko.driver", "src/test/resources/geckodriver0.29.exe");

 

    driver = new FirefoxDriver();

    js = (JavascriptExecutor) driver;

    vars = new HashMap<String, Object>();

  }

  @After

  public void tearDown() {

    driver.quit();

  }

  public String waitForWindow(int timeout) {

    try {

      Thread.sleep(timeout);

    } catch (InterruptedException e) {

      e.printStackTrace();

    }

    Set<String> whNow = driver.getWindowHandles();

    Set<String> whThen = (Set<String>) vars.get("window_handles");

    if (whNow.size() > whThen.size()) {

      whNow.removeAll(whThen);

    }

    return whNow.iterator().next();

  }

  @Test

  public void jigou() throws Exception {

    driver.get("https://www.shzu.edu.cn/");

    driver.manage().window().setSize(new Dimension(1936, 1056));

    

    driver.findElement(By.linkText("机构设置")).click();//第一种定位方式

    WebElement opentab=driver.findElement(By.id("wp_content_w41_0"));

//获取元素的文本

String elementTest=opentab.getText();

//打印元素的文本

PrintWriter out = new PrintWriter(outfile, "UTF-8");// 为了避免一些乱码问题,制定编码方式为 UTF-8

out.println(elementTest);


Actions action = new Actions(driver);

action.moveToElement(driver.findElement(By.linkText("机构设置"))).perform();

Thread.currentThread().sleep(2000);//悬停两秒

driver.findElement(By.cssSelector("li:nth-child(2) li:nth-child(4) > a")).click();//第二种定位方式

    WebElement opentab1=driver.findElement(By.id("wp_content_w41_0"));

//获取元素的文本

    elementTest=opentab1.getText();

//打印元素的文本

    out.println(elementTest);


action.moveToElement(driver.findElement(By.linkText("机构设置"))).perform();

Thread.currentThread().sleep(2000);

    driver.findElement(By.xpath("//a[contains(text(),\'教学机构\')]")).click();//第三种定位方式

    opentab=driver.findElement(By.id("wp_content_w41_0"));

//获取元素的文本

    elementTest=opentab.getText();

//打印元素的文本

    out.println(elementTest);


action.moveToElement(driver.findElement(By.linkText("机构设置"))).perform();

Thread.currentThread().sleep(2000);

    driver.findElement(By.xpath("//ul[@id=\'nav\']/li[2]/ul/li[5]/a")).click();//第四种定位方式

    opentab=driver.findElement(By.id("wp_content_w41_0"));

//获取元素的文本

    elementTest=opentab.getText();

//打印元素的文本

    out.println(elementTest);


action.moveToElement(driver.findElement(By.linkText("机构设置"))).perform();

    driver.findElement(By.xpath("//a[contains(@href, \'/kyjg/list.htm\')]")).click();//第五种定位方式

    opentab=driver.findElement(By.id("wp_content_w41_0"));

//获取元素的文本

    elementTest=opentab.getText();

//打印元素的文本

    out.println(elementTest);


action.moveToElement(driver.findElement(By.linkText("机构设置"))).perform();

Thread.currentThread().sleep(2000);

    driver.findElement(By.xpath("//li[2]/ul/li[7]/a")).click();//第六种定位方式

    opentab=driver.findElement(By.id("wp_content_w41_0"));

//获取元素的文本

    elementTest=opentab.getText();

//打印元素的文本

    out.println(elementTest);


out.close();// 释放资源

    driver.close();

    

 


  }

}

4.实验结果

 


图3实验结果图

 

纪委机关(监察专员办公室)

党委办公室(校长办公室、向南发展办公室)

党委组织部(统战部、党校办公室)

党委宣传部(精神文明办公室)

党委巡察工作领导小组办公室

党委教师工作部(人事处)

党委学生工作部(学生处)

党委保卫部(武装部、综合治理办公室)

党委离退休工作部(离退休工作处)

研究生院(学科建设办公室)

发展与规划处

教务处

科学研究处

计财处

国际交流与合作处

实验室与设备管理处

基建处

资产管理处

审计处

后勤管理处

工会

团委

化学化工学院

机械电气工程学院

水利建筑工程学院

食品学院

信息科学与技术学院(网络空间安全学院)

农学院

动物科技学院

医学院

药学院

生命科学学院

理学院

经济与管理学院

师范学院

文学艺术学院

马克思主义学院

法学院

外国语学院

体育学院

商学院

继续教育学院

兵团教育学院

石河子大学医学院(塔里木大学)分院

孔子学院

网络与信息中心

图书馆

兵团知识产权信息中心(高校国家知识产权信息服务中心)

校医院

分析测试中心

招标采购中心

教学评估中心(教师发展中心)

国际交流中心(对外交流服务中心)

期刊中心

后勤服务中心

南疆研究院

兵团能源发展研究院

中亚教育及人文交流研究中心

政策研究室(高教研究室)

第一附属医院

护士学校

竞技体育运动学校


基于Selenium+java的网页爬虫的评论 (共 条)

分享到微博请遵守国家法律