专栏首页让技术和时代并行利用Jsoup解析网页,抓取数据的简单应用

利用Jsoup解析网页,抓取数据的简单应用

最近一直在公司利用爬虫技术,去抓取一些网页查询网站备案信息,刚开始使用HttpClient 和 jericho (这两个也挺好用你可以去测试一下)。但是后来发现了Jsoup,他和Jquery很相似,在搜节点上使用的技术几乎相似。所以凡是使用过Jquery的都可以去尝试使用Jsoup去解析抓取数据。下面举个例子我们去抓去所有公交车的信息(哥是郑州的哈)。

在解析之前你需要jar包,你可以去http://jsoup.org/直接下载。如果使用maven更方便 只需引进依赖     例如  

<dependency>
 <groupId>org.jsoup</groupId>
 <artifactId>jsoup</artifactId>
 <version>1.7.3</version>
</dependency>

好了下面进入正题,我将用一个实例来证明怎么去连接网站,抓取,最后解析的过程:

package parserhtml;


import java.io.IOException;


import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;


public class ParserCarHtml {
      static String url = "http://218.28.136.21:8081/line.asp";//公交website
       public static Document getHtml(String domain){
       Document html = null;
    try {
                       
//与网站建立连接,并拿到页面。(注意这里?号一定要加上,这也是抓取页面的过程,如果在浏览器中没有?,不用写,这点你可以参考浏览器是怎么解析的,然后试图模       //仿,不过今年来有些人用于非法解析,所以有些网站防爬虫,但是不用怕,在Jsoup中Connection中提供了一系列,添加Cookie,和一些请求参数的方法,这点你可以把              // 浏览器中的参数以key - value的形式copy进去 ,那么你的程序将模拟一个浏览器例如: 
    // Jsoup.connect(url+"?xl="+domain).data("", "").cookie("", "").get();  这里面填写的分别是浏览器中的信息,你可以鼠标右键,审查元素,然后可以找到相应信息。*/

         html = Jsoup.connect(url+"?xl="+domain).get();
        } catch (IOException e) {
             e.printStackTrace();
        }
         return html;
     }
     
    public static String PaserHtml(Document html){
         Elements node = html.select("a");//进行你需要的选择元素。我的这个解析网站比较简单。你可以利用Jsoup中提供的方法去获取一些需要的元素。
         String html1 = node.toString();
         String html2 = html1.replaceAll("\\p{Punct}", "").replaceAll("[a-zA-Z]", "").replaceAll("\\p{Digit}", "");//利用正则表达式去解析网站
         return html2;
     }
     
      
     public static void main(String[] args) {
        getHtml("904");//这里的904是我随便输入的公交车路线。
        PaserHtml(getHtml("904"));
        System.out.println(PaserHtml(getHtml("904")));
   }
}

运行程序输入你想要查询的站点,便可以得到你想要的数据,如下图:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用jquery.qrcode生成二维码

    二维码应用已经渗透到我们的生活工作当中,您只需要用手机对着二维码“扫一扫”即可获得所对应的信息,方便我们了解商家、购物、观影等等。本文将介绍一款基于jquery...

    疯狂的技术宅
  • 厉害了!浏览器都能做人脸检测了!

    Shape Detection API 的发布已经有一些时日,其主要的提供的能力是给予前端直接可用的特征检测的接口(包括条形码、人脸、文本检测)。本文将简单的对...

    疯狂的技术宅
  • 一个诡异的IE10的Bug

    今天突然遇到这么个诡异的问题,客户反映,在IE10下,某功能不能给返回提示。查了下,这地方是用的jquery的ajax方法,在success中使用了alert显...

    徐大嘴
  • jQuery导致的XSS跨站漏洞

    昨天早上一看到报的问题就惊呆了,还能好好用JQ吗?今日早读文章由@我是离心授权分享。

    疯狂的技术宅
  • 那些延时加载图片的开源插件

    图片延时加载技术对大流量的网站来说是十分实用的。目前图片在网站中大量使用,如果不加处理的话会对服务器和带宽造成级大压力,通过只渲染当前用户可见区域的图片,可以极...

    疯狂的技术宅
  • Spring Mvc的跨域解决方案

    一句话:同一个ip、同一个网络协议、同一个端口,三者都满足就是同一个域,否则就是跨域。

    良月柒
  • 将Emoji表情添加到项目中 顶

    选择完需要的表情,点击消息预览就可以看到效果了,有一个微笑表情是QQ表情~~ 可以不用管它。

    linapex
  • jQuery笔试题汇总整理--2018

    1、最大的一点是页面无刷新,用户的体验非常好。 2、使用异步方式与服务器通信,具有更加迅速的响应能力。 3、可以把以前一些服务器负担的工作转嫁到客户端,利用客户...

    用户1272076
  • jquery入门

    周小董
  • 基于 React 官方建议的编程风格

    为了跟 react 的事件命名保持一致: onClick, onDrag, onChange, 等等,采用下面的格式:

    用户1065635

扫码关注云+社区

领取腾讯云代金券