java爬虫初试(三)有关Selenium RC的知识

10 篇文章 1 订阅

总体介绍一下:学长发的链接有

1.Selenium的大概介绍;2.selenium的一个博客,挺多实用性文章点击打开链接

3.如何解析一个HTML字符串;http://www.open-open.com/jsoup/parse-document-from-string.htm

4.java 网页解析工具包 Jsoup  超时异常:java.net.SocketTimeoutException:Read timed out;点击打开链接

5.Java网页数据抓取实例点击打开链接

在网页数据采集的时候,我们往往要经过这几个大的步骤:

①通过URL地址读取目标网页②获得网页源码③通过网页源码抽取我们要提取的目的数据④对数据进行格式转换,获得我们需要的数据。

6.

Java - 正则表达式的运用(Pattern模式和Matcher匹配)

点击打开链接

7.点击打开链接

Jsoup简介——使用Java抓取网页数据

jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。jsoup的主要功能如下:

(1) 从一个URL,文件或字符串中解析HTML;

(2) 使用DOM或CSS选择器来查找、取出数据;

(3) 可操作HTML元素、属性、文本;


8.点击打开链接

XPath实例//还不知道在哪里用的

9.点击打开链接

Selenium Webdriver元素定位的八种常用方式

点击打开链接

java selenium (五) 元素定位大全(写的更好)

10. 点击打开链接

Selenium2(java)selenium常用API 四(也写得很好)





1.Selenium RC分为两部分。

  • Selenium服务器启动和终止,除了它的浏览器解释并执行Selenese命令。它也通过拦截和验证器和测试的应用程序之间传递的HTTP消息作为HTTP代理。

  • 客户端库,它提供了编程语言(Java,C#,Perl,Python和PHP)和Selenium-RC服务器中的每一个之间的接口。

2.随笔分类 -selenium点击打开链接

里面有

Selenium模拟JQuery滑动解锁、

selenium操作隐藏的元素、

selenium处理select标签的下拉框、

自动化测试如何解决验证码的问题


3.http://www.open-open.com/jsoup/parse-document-from-string.htm

解析一个HTML字符串

存在问题

来自用户输入,一个文件或一个网站的HTML字符串,你可能需要对它进行解析并取其内容,或校验其格式是否完整,或想修改它。怎么办?jsonu能够帮你轻松解决这些问题

解决方法

使用静态Jsoup.parse(String html) 方法或 Jsoup.parse(String html, String baseUri)示例代码:

String html = "<html><head><title>First parse</title></head>"
  + "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);

描述

parse(String html, String baseUri) 这方法能够将输入的HTML解析为一个新的文档 (Document),参数 baseUri 是用来将相对 URL 转成绝对URL,并指定从哪个网站获取文档。如这个方法不适用,你可以使用 parse(String html) 方法来解析成HTML字符串如上面的示例。.

只要解析的不是空字符串,就能返回一个结构合理的文档,其中包含(至少) 一个head和一个body元素。

一旦拥有了一个Document,你就可以使用Document中适当的方法或它父类 ElementNode中的方法来取得相关数据。


4.点击打开链接

今天做了一个Jsoup解析网站的项目,使用Jsoup.connect(url).get()连接某网站时偶尔会出现

java.net.SocketTimeoutException:Read timed out异常。

原因是默认的Socket的延时比较短,而有些网站的响应速度比较慢,

所以会发生超时的情况。


解决方法:

链接的时候设定超时时间即可。

    try{
        doc = Jsoup.connect(url).timeout(5000).get();
    }
    catch(Exception e){
        e.printStackTrace();
    }

5.

  1. static Pattern proInfo   
  2.            = Pattern.compile("<div>(.*?)</div>\\s*<div>(.*?)</div>\\s*<div>(.*?)</div>\\s*<div>(.*?)</div>\\s*<div>(.*?)</div>", Pattern.DOTALL);  
  3.     private static List<Product> getDataStructure(String str) {  
  4.         //运用正则表达式对获取的网页源码进行数据匹配,提取我们所要的数据,在以后的过程中,我们可以采用httpclient+jsoup,  
  5.         //现在暂时运用正则表达式对数据进行抽取提取  
  6.         String[] info = str.split("</li>");  
  7.         List<Product> list = new ArrayList<Product>();  
  8.         for (String s : info) {  
  9.             Matcher m = proInfo.matcher(s);  
  10.             Product p = null;  
  11.             if (m.find()) {  
  12.                 p = new Product();  
  13.                 //设置产品型号  
  14.                 String[] ss = m.group(1).trim().replace(" """).split(">");  
  15.                 p.setProStyle(ss[1]);  
  16.                 //设置产品数量  
  17.                 p.setProAmount(m.group(2).trim().replace(" """));  
  18.                 //设置产品报价  
  19.                 p.setProPrice(m.group(4).trim().replace(" """));  
  20.                 //设置产品供应商  
  21.                 p.setProSupplier(m.group(5).trim().replace(" """));  
  22.                 list.add(p);  
  23.             }  
  24.         }  
  25.         //这里对集合里面不是我们要提取的数据进行移除  
  26.         list.remove(0); 
Pattern.DOTALL
          启用 dotall 模式。

(.*?)

?涉及到贪婪模式
当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。

有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:

a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值