Web自动化selenium技术快速实现爬虫_eclipse+selenium的网页爬虫

比如,我们现在要实现一个这样的需求:打开百度–》输入拉钩–》找到拉钩链接,点击进入拉钩–》选择“全国”站–》输入岗位“自动化测试工程师”–》搜索–》爬取所有的自动化测试岗位信息

用selenium怎么实现呢?

基于chrome谷歌浏览器的自动化代码如下,每一步操作都加了注释标注,大家可以对比理解,这个程序就实现了一个简单的爬虫:

import java.util.List;
import java.util.Set;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class Test3{
    private static WebDriver driver;
    public static void main(String[] args) throws InterruptedException {
        //设置系统变量,指定驱动文件路径
        System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
        //初始化driver驱动对象
        driver = new ChromeDriver();
        //访问拉钩主页获取获取
        landLagouAndFetchData();
    }

    /**访问拉钩主页获取获取
     * @throws InterruptedException
     */
    private static void landLagouAndFetchData() throws InterruptedException {
        //访问百度
        driver.get("http://www.baidu.com");
        //窗口最大化
        driver.manage().window().maximize();
        //输入查找内容
        driver.findElement(By.id("kw")).sendKeys("拉钩");
        //点击"百度一下"完成搜索
        driver.findElement(By.id("su")).click();
        //获取当前页面的句柄
        String currentHandle = driver.getWindowHandle();
        //点击进入官网
        getElement(By.partialLinkText("-专业的互联网招聘平台_找工作_招聘_人才网_求职")).click();
        //获取或有打开页面的句柄
        Set<String> handles = driver.getWindowHandles();
        //循环句柄
        for (String handle : handles) {
            //获取拉钩页面的句柄
            if(!handle.equals(currentHandle)){
                driver.switchTo().window(handle);
            }
        }
        try {
            //选择全国站
            getElement(By.partialLinkText("全国站")).click();
        } catch (Throwable e) {
            //失败重试机制
            landLagouAndFetchData();
        }
        //输入查询数据
        getElement(By.id("search_input")).sendKeys("自动化测试工程师");
        //点击"搜索"按钮,完成搜索
        getElement(By.id("search_button")).click();
        //因为所有岗位信息显示区域样式都一样,因此根据样式获取每页的所有岗位信息<li>...</li>
        List<WebElement> webElements =getElements(By.className("default_list"));
        //循环处理
        for (WebElement webElement : webElements) {
            //打印岗位信息,此处也可考虑保存到文件,后面再统一写入到文件
            System.out.println(webElement.getText());
            //分隔符
            System.out.println("-------------------------------");
        }
        //循环拿到其余每一页的数据
        while(true){
            //获取"下一页"按钮
            WebElement nextPage = getElement(By.className("pager_next"));
            //循环执行条件:"下一页"按钮不为空,且可点击
            if(nextPage!=null&&nextPage.isEnabled()){
                //点击下一页
                nextPage.click();
                //等待5秒
                Thread.sleep(5000);
                //根据样式获取每页的所有岗位信息<li>...</li>
                List<WebElement> webElements2 =getElements(By.className("default_list"));
                //循环打印
                for (WebElement webElement : webElements2) {
                    System.out.println(webElement.getText());
                    System.out.println("-------------------------------");
                }
            }else{
                //不满足条件则终止循环
                break;
            }
        }
    }
    
    /**显示等待
     * @param locator 元素定位选择器
     * @return
     */
    private static List<WebElement> getElements(By locator) {
        //显示等待wait对象,最长等待时间30秒,默认500毫秒页面轮询一次
        WebDriverWait wait = new WebDriverWait(driver, 30);
        try {
            //调用until方法,传入条件:满足条件的元素列表出现在页面。如果30秒内未找到,则抛出超时异常
            List<WebElement> webElements = wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(locator));
            return webElements;
        } catch (Exception e) {
            System.out.println("定位元素超时了");
        }
        return null;
    }

    /**显示等待
     * @param locator 元素定位选择器
     * @return
     */
    public static WebElement getElement(By locator){
        //显示等待wait对象,最长等待时间30秒,默认500毫秒页面轮询一次
        WebDriverWait wait = new WebDriverWait(driver, 30);
        try {
            //调用until方法,传入条件:满足条件的元素出现在页面。如果30秒内未找到,则抛出超时异常
            WebElement webElement = wait.until(ExpectedConditions.presenceOfElementLocated(locator));
            return webElement;
        } catch (Exception e) {
            System.out.println("定位元素超时了");
        }
        return null;
        
    }
}

自动化测试工程师
[杭州·天目山…]
1天前发布
10k-15k 经验1-3年 / 大专
武汉佰钧成技术有限公司
移动互联网 / 不需要融资 / 2000人以上
带薪年假 计算机软件 管理规范 定期体检
“善于沟通”

自动化测试工程师
[上海·浦江]
2018-08-30
10k-15k 经验1-3年 / 本科
泛微
移动互联网,企业服务 / 上市公司 / 2000人以上
Web测试 白盒测试
“五险一金,绩效奖金,免费三餐,员工旅游”

自动化测试工程师
[厦门·思明区]
3天前发布
8k-15k 经验3-5年 / 大专
准动网络科技
移动互联网,企业服务 / B轮 / 150-500人
精英团队 扁平管理 自由开放 技术大牛
“团队nic,技术大牛,技术交流,弹性工作”

自动化测试工程师
[杭州·长河]
2天前发布
10k-20k 经验3-5年 / 本科
浙江新再灵科技股份有限公司
移动互联网 / D轮及以上 / 150-500人
脚本
“福利多,环境好,前景佳”

自动化测试工程师
[天津]
3天前发布
10k-15k 经验3-5年 / 本科
神州商龙
移动互联网,O2O / 上市公司 / 150-500人
技能培训 年底双薪 节日礼物 采暖费
“研发氛围,福利待遇,上升空间”

自动化测试工程师
[上海·杨浦区]
3天前发布
15k-25k 经验5-10年 / 本科
信用算力
移动互联网,金融 / B轮 / 150-500人
年底双薪 股票期权 带薪年假 绩效奖金
“年终奖丰厚,弹性工作,升职加薪,氛围欢快”

自动化测试工程师
[上海·张江]
3天前发布
10k-15k 经验3-5年 / 大专
江苏亿科达
移动互联网,金融 / 不需要融资 / 500-2000人
脚本 功能测试 性能测试
“节日礼金,年底奖金,体检旅游,带薪年假”

自动化测试工程师
[北京·五道口]
3天前发布
15k-25k 经验3-5年 / 本科
商汤科技
移动互联网 / C轮 / 2000人以上
五险一金 弹性工作 丰盛三餐 发展空间大
“技术大牛,资源多”

自动化测试工程师
[北京·海淀区]
3天前发布
8k-15k 经验3-5年 / 大专
诚迈科技
移动互联网 / 上市公司 / 2000人以上
Web测试 移动端
“互联网公司”

自动化测试工程师
[长沙·银盆岭]
3天前发布
9k-12k 经验3-5年 / 本科
中和农信
移动互联网,金融 / 不需要融资 / 2000人以上
功能测试 性能测试
“绩效奖金,五险一金,带薪年假,农村金融”

自动化测试工程师
[珠海·香洲区]
2018-08-28
15k-30k 经验3-5年 / 大专
金山办公软件
移动互联网 / 上市公司 / 2000人以上
年底双薪 节日礼物 技能培训 绩效奖金
“海景办公,免费三餐,六险一金,福利优”

自动化测试工程师
[北京·上地]
2018-08-30
15k-25k 经验3-5年 / 本科
苏州锦佰安
信息安全 / 天使轮 / 15-50人
信息安全 脚本
“人工智能,前景广阔,福利齐全,技术领先”

自动化测试工程师
[上海·普陀区]
3天前发布
15k-18k 经验5-10年 / 本科
裕宁科技
移动互联网,金融 / 未融资 / 50-150人
脚本
“测试工程师”

自动化测试工程师
[广州·龙口]
3天前发布
10k-13k 经验1-3年 / 本科
佛山市宝诗龙精密五金有限公司
移动互联网 / 上市公司 / 500-2000人
Selenium Rft
“六险一金,周末双休,年底发展奖”

自动化测试工程师
[深圳·蔡屋围]
3天前发布
12k-18k 经验5-10年 / 大专
博奥特科技
移动互联网,金融 / 未融资 / 150-500人
金融 脚本
“周未双休,福田CBD,大咖云集”

自动化测试工程师
[上海·北新泾]
3天前发布
16k-25k 经验3-5年 / 本科
武汉佰钧成技术有限公司
移动互联网 / 不需要融资 / 2000人以上
脚本
“六险一金,前沿技术,大牛带队,不加班”

自动化测试工程师
[上海·徐家汇]
3天前发布
10k-20k 经验3-5年 / 本科
Datatist
数据服务,广告营销 / A轮 / 50-150人
软件测试
“硅谷团队,发15m,晋升平台,带薪假期”

自动化测试工程师
[上海·张江]
2018-08-29
10k-15k 经验1-3年 / 本科
CLPS
数据服务,金融 / 未融资 / 500-2000人
Web测试 测试开发
“年底双薪,五险一金,带薪休假,补充医疗”

自动化测试工程师
[杭州·西湖区]
2天前发布
8k-12k 经验1-3年 / 本科
美国道富
金融 / 上市公司 / 2000人以上
互联网金融 银行 Web测试 Selenium 功能测试
“优秀团队,英语工作”

自动化测试工程师
[北京·清河]
3天前发布
15k-25k 经验3-5年 / 本科
AdMaster
数据服务 / 不需要融资 / 500-2000人
脚本
“扁平管理,行业领先,福利完善,氛围轻松”

自动化测试工程师
[北京·万泉河]
3天前发布
10k-15k 经验1-3年 / 本科
一起考教师
移动互联网,教育 / A轮 / 50-150人
功能测试 性能测试
“地铁周边,弹性工作,扁平管理,公司氛围好”

自动化测试工程师
[北京·望京]
2天前发布
18k-36k 经验3-5年 / 本科
作业盒子
移动互联网,教育 / C轮 / 500-2000人
技能培训 年底双薪 节日礼物 年度旅游
“六险一金,房补,下午茶,饭补”

自动化测试工程师
[上海·浦东新…]
3天前发布
12k-24k 经验3-5年 / 本科
爱客CRM
移动互联网 / B轮 / 150-500人
信息安全 脚本
“带教师傅,绩效奖金,周末双休,多次旅游”

自动化测试工程师
[武汉·花桥]
3天前发布
8k-15k 经验3-5年 / 大专
武汉格事化信息技术有…
移动互联网 / 不需要融资 / 15-50人
游戏 脚本
“五险一金,骨干齐全”

自动化测试工程师
[上海·浦东新…]
3天前发布
8k-15k 经验1年以下 / 本科
群星金融
金融 / B轮 / 50-150人
年底双薪 带薪年假 定期体检 交通补助
“技术大牛,弹性工作制,免费班车,无限零食”

自动化测试工程师
[上海·漕宝路]
1天前发布
12k-24k 经验3-5年 / 本科
杏仁医生
移动互联网,O2O / B轮 / 500-2000人
五险一金 弹性工作 岗位晋升 顶尖团队
“发展好,福利好,氛围好,环境好”

自动化测试工程师
[南京·雨花台…]
2018-08-30
9k-12k 经验1-3年 / 本科
Linkflow
企业服务,广告营销 / A轮 / 15-50人
Web测试 Selenium 测试开发
“弹性工作,技术氛围浓,双休,六险一金”

自动化测试工程师
[上海·东外滩]
2018-08-27
8k-15k 经验3-5年 / 本科
哔哩哔哩
移动互联网,文化娱乐 / 上市公司 / 2000人以上
带薪年假 绩效奖金 交通补助 午餐补助
“90后最喜欢的弹幕网之一”

自动化测试工程师
[北京·和平里]
3天前发布
12k-20k 经验3-5年 / 大专
轻松筹
移动互联网,金融 / C轮 / 500-2000人
节日礼物 股票期权 扁平管理 领导好
“技术咖”

自动化测试工程师
[北京·中关村]
3天前发布
10k-20k 经验5-10年 / 本科
BJCA
信息安全 / 上市公司 / 500-2000人
信息安全
“国企福利,上市企业,15薪,周末双休”

自动化测试工程师
[广州·天河区]
3天前发布
8k-10k 经验1-3年 / 本科
武汉佰钧成技术有限公司
移动互联网 / 不需要融资 / 2000人以上
Web测试 Selenium 产品测试
“国企,六险一金,弹性工作,高薪”

自动化测试工程师
[上海·张江]
3天前发布
12k-20k 经验应届毕业生 / 本科
CLPS
数据服务,金融 / 未融资 / 500-2000人
专项奖金 带薪年假 定期体检 交通补助
“外企,六险一金,年假多”

自动化测试工程师
[上海·曹家渡]
2018-08-30
15k-18k 经验3-5年 / 本科
微知
企业服务,数据服务 / B轮 / 150-500人
企业服务 大数据 Loadrunner Selenium Jmeter
“互联网平台,大数据云服”

软件自动化测试工程师
[广州·萝岗区]
1天前发布
5k-9k 经验不限 / 不限
巧瞳科技
硬件,移动互联网 / 未融资 / 少于15人
工具软件 企业服务 移动端 产品测试 Android测试 IOS测试
“朝阳行业,老板懂分享,气氛和谐,技术导向”

自动化测试工程师
[上海·张江]
1天前发布
12k-18k 经验1-3年 / 本科
爱客CRM
移动互联网 / B轮 / 150-500人
信息安全 脚本
“绩效奖金,周末双休,多次旅游”

自动化测试工程师
[上海·浦东新…]
3天前发布
20k-30k 经验5-10年 / 大专
容易网
电子商务,O2O / 上市公司 / 150-500人
脚本
“高薪,弹性工作”

自动化测试工程师
[杭州·近江]
2018-08-30
10k-20k 经验3-5年 / 本科
车国
移动互联网,O2O / 不需要融资 / 2000人以上
汽车 金融 脚本
“氛围好,13薪起,额外绩效”

自动化测试工程师
[上海·张江]
2018-08-30
15k-25k 经验3-5年 / 本科
斑马旅游
电子商务,旅游 / A轮 / 500-2000人
旅游
“绩效奖金,学习型组织,大牛带教,弹性工时”

自动化测试工程师
[北京·东大桥]
2018-08-30
15k-25k 经验5-10年 / 本科
唯医网
移动互联网,医疗健康 / B轮 / 150-500人
教育 大数据 性能测试
“好老板,年轻团队,培训成长快,福利待遇佳”

自动化测试工程师
[杭州·西溪]
2018-08-28
8k-12k 经验3-5年 / 本科
江苏亿科达
移动互联网,金融 / 不需要融资 / 500-2000人
金融
“五险一金,员工旅游,员工体检,年底奖金”

自动化测试工程师
[广州·石牌]
2018-08-24
8k-15k 经验1-3年 / 本科
数沃科技
数据服务,移动互联网 / 不需要融资 / 15-50人
性能测试 脚本
“优秀团队,产品强大,发展空间大,弹性工作”

自动化测试
[杭州·西溪]
1天前发布
10k-18k 经验1-3年 / 本科
腾展科技
移动互联网,社交网络 / 上市公司 / 50-150人
出国旅游 股票期权 精英团队 强悍的创始人
“节日福利,股票期权,扁平管理,发展空间大”

自动化测试开发工程师
[北京·酒仙桥]
3天前发布
15k-25k 经验3-5年 / 本科
移动互联网,游戏 / 上市公司 / 2000人以上
移动互联网 Android测试
“大牛带,领导好,平台大”

自动化测试工程师
[北京·朝阳区]
2018-08-27
15k-30k 经验3-5年 / 本科
达闼科技
移动互联网 / B轮 / 150-500人
年底双薪 技能培训 绩效奖金 岗位晋升
“定期体检,弹性工作,带薪年假,节日福利”

自动化测试
[厦门·前埔医…]
3天前发布
8k-15k 经验1-3年 / 本科
美柚
移动互联网 / D轮及以上 / 500-2000人
绩效奖金 股票期权 年底双薪 专项奖金
“测试,开发”

自动化测试工程师
[上海·北新泾]
2018-08-30
20k-35k 经验5-10年 / 本科
武汉佰钧成技术有限公司
移动互联网 / 不需要融资 / 2000人以上
脚本
“薪资优厚,前沿技术,双休不加班,节假日福利”

自动化测试(QA)工程师
[上海·张江]
3天前发布
10k-20k 经验1-3年 / 本科
CLPS
数据服务,金融 / 未融资 / 500-2000人
专项奖金 带薪年假 定期体检 交通补助
“外企,14天年假,六险一金”

自动化测试工程师
[广州·员村]
2018-08-06
10k-20k 经验3-5年 / 本科
上海中软华腾软件系统有限公司
企业服务,金融 / 上市公司 / 2000人以上
脚本
“双休,弹性工作制,年假,五险一金”

自动化测试工程师
[北京·上地]
3天前发布
8k-16k 经验3-5年 / 本科
惠赢天下
移动互联网,电子商务 / D轮及以上 / 500-2000人
“14薪,大型企业,弹性工作制,地铁旁”

自动化测试工程师

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值