非常简单的小爬虫。
本爬虫使用Jsoup,Jsoup主要是简化连接和选择取内容的代码,抓取的是知乎日报首页上的文章。
其实大家都知道,互联网上显示的内容都最终都是由HTML构成的,说以写爬虫最主要的工作就是分析网页代码的结构,知乎日报首页的结构如下:
经分析得知,每一个col-lg-4类对应着每一列,共有三列,每个wrap或box或link-button类都可以代表一篇文章。我们要做的工作就是将文章里的标题取出来,然后在取出文章对应链接里面的内容。我们现在已经可以用wrap,box,link-button等获得文章的标题(越南「Lady Gaga」参与竞选,倡议尊重同性恋、减少性别歧视)和文章的链接(/story/8287018),下一步就是获取链接里的内容,打开链接,我们得到如下结构:
这里就要看大家想怎么抓取了,content类只包含内容,没有作者,标题。如果想把这些也抓取进来,可以选着question类。我选着的是content类。
代码如下
- 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串里,上网查了一下,一般有两种方案,一是模拟用户浏览器操作得到所需要的信息,还有一种是直接分析你需要的异步请求,找到规律,下次有时间在研究研究和大家分享