非常简单的小爬虫。

非常简单的小爬虫。

本爬虫使用Jsoup,Jsoup主要是简化连接和选择取内容的代码,抓取的是知乎日报首页上的文章。

其实大家都知道,互联网上显示的内容都最终都是由HTML构成的,说以写爬虫最主要的工作就是分析网页代码的结构,知乎日报首页的结构如下:

知乎日报网页结构

经分析得知,每一个col-lg-4类对应着每一列,共有三列,每个wrap或box或link-button类都可以代表一篇文章。我们要做的工作就是将文章里的标题取出来,然后在取出文章对应链接里面的内容。我们现在已经可以用wrap,box,link-button等获得文章的标题(越南「Lady Gaga」参与竞选,倡议尊重同性恋、减少性别歧视)和文章的链接(/story/8287018),下一步就是获取链接里的内容,打开链接,我们得到如下结构:

内容结构

这里就要看大家想怎么抓取了,content类只包含内容,没有作者,标题。如果想把这些也抓取进来,可以选着question类。我选着的是content类。

代码如下

import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;

public class ADemo {

    public static void main(String[] args) throws IOException {

        Connection.Response connection;
        connection = Jsoup.connect("http://daily.zhihu.com/").execute();  
        Document doc = connection.parse(); 
        //得到文章信息的html块
        Elements elements = doc.select("a.link-button");

        for(Element element:elements){
            //获得文章的标题
            System.out.print(element.text()+"|||||");
            //获得文章内容的url,然后打开链接
            String url = "http://daily.zhihu.com"+element.select("a").attr("href");
            Connection.Response connection2;
            connection2 = Jsoup.connect(url).execute();
            //获得文章的内容
            System.out.println(connection2.parse().select(".content").text());
        }

    }
}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

做完这个后,感觉爬虫的难点在于分析html的文档结构,按照什么逻辑去爬取,这两个问题理清楚了,爬虫代码还是很容易写的。

本文还有一个方面没有涉及到,就是动态生成的网页,动态生成的网页通过如上方法是不行的,一般是在一个异步请求返回的json串里,上网查了一下,一般有两种方案,一是模拟用户浏览器操作得到所需要的信息,还有一种是直接分析你需要的异步请求,找到规律,下次有时间在研究研究和大家分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值