简单的爬虫

好久没有上传新的博客了,上上周写出了爬虫,但是因为偷懒和末考,一直到今天才回来写有关这个爬虫的博客。

原来不了解爬虫的时候感觉爬虫好高大上啊,做了之后才发现......哦,好简单......

还有,在这里要感谢一下虎扑大大,感谢他没有封我的IP......

其实爬虫很简单,用到了HttpClient还有HTMLParser......

对HttpClient(基于JDK的HttpConnection)不是很了解,这里不细说只是用一下[尴尬]。使用HTMLParser解析html的页面,基于jsoup解析页面。

jsoup很方便,可以直接使用jquery的标签在页面中查找我们所需要的数据

 1 public static void main(String[] args) throws IOException {
 2         // TODO Auto-generated method stub
 3         HttpClient hc = new HttpClient();
 4         String listHtml = hc.get("url","utf-8");
 5         //System.out.println(listHtml);
 6         //讲html  转换成  Doccument
 7         Document doc = HTMLParser.parse(listHtml);
 8         //取得 Body 标签
 9         Elements bodys = doc.getElementsByTag("body");
10         Element body = bodys.get(0);//得到具体的Body
11         //找到Body下面的 所有Tr元素
12         Elements trs = body.select("tr");
13         //循环便利 tr
14         for (Element tr : trs) {
15             //去掉带有title&linglei的tr
16             if(tr.hasClass("title") || tr.hasClass("linglei")){
17                 continue;
18             }
19             Element atag = tr.select("td").get(2).select("a").get(0);
20             String ahref = atag.attr("href");
21             //进入当前页,爬取我所需要的table信息。
22             String dataHtml = hc.get(ahref,"utf-8");
23             //将获取到的dataHtml(表格数据页)转换成document
24             Document dataDoc = HTMLParser.parse(dataHtml);
25             //获取当前页里的body标签(这里得到的其实是一个集合)
26             Elements dataBodys = dataDoc.getElementsByTag("body");
27             //list.get()方法获取到集合中的元素,即body标签里的内容
28             Element dataBody = dataBodys.get(0);
29             //获取到body中所有的tr标签(当然这里也是集合)
30             Elements dataTrs = dataBody.select("tr");
31             //foreach便利所有的tr标签
32             for(Element dataTr:dataTrs){
33                 //去掉带有title,bg_a,away_score,home_score的tr
34                 if(dataTr.hasClass("title") || dataTr.hasClass("bg_a") || dataTr.hasClass("away_score") ||dataTr.hasClass("home_score")){
35                     continue;
36                 }
37                 Element dataTd = dataTr.select("td").get(0).select("a").get(0);
38                 //获取到文本内容
39                 String dataTdText = dataTd.text();
40                 System.out.println(dataTdText);
41             }
42         }
43     }

黄色部分的url可以放入你想要爬取的网站地址,记住Elements是一个集合,所有的集合方法我们都可以用eg:.get().size()等......

在一个Element里.select()就可以获取到你想要获取的class或id或者是Html标签,.text().attr().html()都可以获取里面我们想要获取到的信息。

这就是简单的爬虫,没有啥算法,没有难点,有的只是找规律,自己去思考到底要如何解析你想要解析的页面信息。

posted @ 2017-07-09 11:43  燕麦酸奶  阅读(167)  评论(0编辑  收藏  举报