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

基于Selenium的网页爬虫2~3

2023-07-22 00:21 作者:外号不可能是老眯  | 我要投稿


一、实验目的

1.通过动手实际操作,巩固所学的系统功能测试相关知识;

2.初步了解Selenium工具的使用方法,加深对系统功能测试的认识。

3.熟练掌握利用Java语言,进行Selenium IDESelenium WebDriver使用

二、实验前提

1.学习系统测试基本知识;

2.熟悉Eclipse工具的基本操作;

3.掌握基于Eclipse工具的Java编程;

三、实验内容

1.爬取新浪网中,新闻标签的所有分类并按分类将名字打印出来。提交脚本代码和结果截图。

2.爬取石河子大学首页的所有机构信息将名称打印出来(要求至少用两种不同的定位方法)。提交脚本代码和结果截图。

3. 爬取58同城二手房中石河子地区“一小八中”的二手房信息,将房屋面积、房屋总价2个信息打印出来。提交脚本代码和结果截图。

4以上3个实验内容,完成其中1个即可

四、实验过程和结果

1.使用 selsniumide编辑脚本

 

图1 使用 selsniumide编辑脚本

 

 

2. 使用eclipse 编辑脚本 代码:

package com.test;

 

// Generated by Selenium IDE

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.io.File;

import java.io.FileNotFoundException;

import java.io.PrintWriter;

import java.io.UnsupportedEncodingException;

import java.net.MalformedURLException;

import java.net.URL;

 

public class HttpswwwsinacomcnTest {

File outfile = new File("D:\\20201008368\\java_p_test2\\20201008368.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 httpswwwsinacomcn() throws Exception, UnsupportedEncodingException {

    driver.get("https://www.sina.com.cn/");

    driver.manage().window().setSize(new Dimension(937, 860));

    js.executeScript("window.scrollTo(0,0)");

    vars.put("window_handles", driver.getWindowHandles());

    PrintWriter out = new PrintWriter(outfile, "UTF-8");

    

    WebElement opentab;

    String elementTest;

    for(int i=1;i<=3;i++) {

     for(int j=1;j<=5;j++) {

      for(int k=1;k<=4;k++) {

             opentab=driver.findElement(By.cssSelector(".nav-mod-1:nth-child(" + j + ") > ul:nth-child(" + i + ") > li:nth-child(" + k + ") > a"));

          elementTest=opentab.getText();

          out.print(elementTest);

          out.print(" ");

      }

     }

     out.println(" ");

    }

 

    

    

    out.close();

    driver.close();

  }

}

 

3. 实验结果图

 

图2 实验结果截图

 

新闻 军事 国内 国际 体育 NBA 英超 中超 博客 专栏 专题 理财 时尚 女性 育儿 投资 微博 城市 上海 高尔夫  

财经 股票 基金 外汇 娱乐 明星 电影 电视 视频 综艺 VR 直播 教育 留学 高考 佛学 旅游 文化 彩票 English  

科技 手机 探索 众测 汽车 报价 买车 新车 房产 二手房 家居 收藏 图片 读书 黑猫 政务 游戏 手游 邮箱 更多  


四、实验过程和结果

1.使用selenium ide 录入脚本

 

图1 使用selenium ide 录入脚本

 

2. 代码

package com.test;

 

import org.junit.Test;

import org.junit.Before;

import org.junit.After;

import java.util.*;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.PrintWriter;

import java.io.UnsupportedEncodingException;

 

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.openqa.selenium.Dimension;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.interactions.Actions;

import org.openqa.selenium.JavascriptExecutor;

 

 

public class XinwenTest {

File outfile = new File("D:\\Desktop\\软件测试20201008380\\实验2\\20201008380.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 untitled() throws Exception, UnsupportedEncodingException {

driver.get("https://cn.58.com/");

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

driver.findElement(By.id("keyword")).click();

driver.findElement(By.id("keyword")).sendKeys("一小八中");

driver.findElement(By.id("searchbtn")).click();

driver.findElement(By.linkText("新疆")).click();

driver.findElement(By.linkText("二手房")).click();

vars.put("window_handles", driver.getWindowHandles());

PrintWriter out = new PrintWriter(outfile, "UTF-8");

for (int i = 1; i < 10; i++)

{

WebElement opentab=driver.findElement(By.cssSelector(".property:nth-child("+ i +") .property-content-title-name:nth-child(1)"));

String elementTest=opentab.getText();

out.println(elementTest);

opentab=driver.findElement(By.cssSelector(".property:nth-child("+ i +") .property-price-total-num"));

elementTest=opentab.getText();

out.print(elementTest);

out.println("W");

opentab=driver.findElement(By.cssSelector(".property:nth-child("+ i +") > .property-ex .property-content-info-text:nth-child(2)"));

elementTest=opentab.getText();

out.println(elementTest);

out.println(" ");

 

}

out.close();

driver.close();

}

 

}

 

 

3. 实验结果

 

图2 实验结果图



 


基于Selenium的网页爬虫2~3的评论 (共 条)

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