selenium2java两个小爬虫示例

来源:互联网 发布:手机网站的空间域名 编辑:程序博客网 时间:2024/05/21 00:51

本人在使用图灵机器人的过程中,需要丰富一下机器人知识库里面的笑话、段子等内容,就得去网上爬一些内容下来,经过尝试终于成功了,效果一般般,主要原因是添加的知识条目审核不通过,还有就是爬虫次数限制,暂时放弃了,以后打算用接口做爬虫,selenium爬起来很容易出错,浏览器加载太慢了,一旦次数太多很耗时。分享一下代码,供大家参考。

package wepractice;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Set;import selenium.Library;import selenium.Excel;public class NeiHanjokes extends Library{public static void main(String[] args) {Library library = new Library();List<String[]> sheet = new ArrayList<String[]>();//新建list,用于存放每个测试用例的测试结果Map<Integer, List<String[]>> dateJoke = new HashMap<Integer, List<String[]>>();driver.get("http://neihanshequ.com/");String home = driver.getWindowHandle();library.findElementByXpathAndClick(".//*[@id='detail-list']/li[1]/div/div[2]/a/div/h1/p");Set<String> handles = driver.getWindowHandles();for(String handle : handles){if (!handle.equals(home)) {driver.switchTo().window(handle);}}for (int i = 0; i < 15; i++) {library.output(i);String joke = library.getTextByXpath("html/body/div[3]/div[1]/div/ul/li[1]/div/div[2]/a/div/h1/p");    String[]  jokes = new String[1];    jokes[0] = joke;    sheet.add(jokes);    library.findElementByIdAndClick("prevGroupLink");}        dateJoke.put(1, sheet);    Excel excel = new Excel();    excel.writeXlsx(dateJoke);    driver.close();//关闭窗口    for(String handle : handles){//切换窗口if (handle.equals(home)) {driver.switchTo().window(handle);}}    driver.quit();//退出浏览器}}
package wepractice;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Set;import selenium.Excel;import selenium.Library;public class ColdJokes extends Library{public static void main(String[] args) {Library library = new Library();//新建library对象并初始化List<String[]> sheet = new ArrayList<String[]>();//新建并初始化listMap<Integer, List<String[]>> dateJoke = new HashMap<Integer, List<String[]>>();//新建并实例化mapdriver.get("http://xiaohua.zol.com.cn/lengxiaohua/");//访问网址String home = driver.getWindowHandle();//获取当前窗口句柄library.findElementByClassNameAndClick("all-read");//查看第一个全文Set<String> handles = driver.getWindowHandles();//获取当前所有句柄for(String handle : handles){//切换窗口if (!handle.equals(home)) {driver.switchTo().window(handle);}}for (int i = 0; i < 10; i++) {library.output(i + 1);//输出次数String joke = library.getTextByClassName("article-text");//获取内容    String[]  jokes = new String[1];//新建并初始化string[]数组    jokes[0] = joke;//讲内容存入string[]数组    sheet.add(jokes);//存入list中    library.findElementByTextAndClick("上一页");//点击上一页}    dateJoke.put(1, sheet);    Excel excel = new Excel();//新建并初始化excel对象    excel.writeXlsx(dateJoke);//保存excel文档    driver.close();//关闭窗口    for(String handle : handles){//切换窗口if (handle.equals(home)) {driver.switchTo().window(handle);}}    driver.quit();//退出浏览器}}



原创粉丝点击