Java爬虫之爬取多篇含有关键词的文章标题和内容
实现的功能
该代码针对维科网写的爬虫,具体如果想写其它的可以照着这篇模仿来写!
输入想要搜索的关键字和输入关键字后的前几页页数(即输入关键字后跳转的网页的页数,如下图)
将包含关键字的文章标题和内容提取出来保存在一个txt文件里面(如下图,输入关键词为智能,前2页)
需要用到的jar包
获取文章信息需要的包:Jsoup;
可以到https://jsoup.org/download下载,如果就想着爬虫,选择第一个就够了。
需要对html一些标签有一定的了解
可以到w3cschool了解html相关知识;
打开维科闻网站输入关键词后,按F12开发者工具,或者右键点击查看源,就可以看到网页的源代码。
代码设计思想
有心者应该知道我用python写过这个爬虫(python爬虫之爬取多篇含有关键词的文章标题和内容),两者有着异曲同工之妙。
1.每个网页通过Jsoup.connect(url).get请求获得网页源代码,再通过getElementsByClass()或者select()等来对源代码进行提取信息;
2.先观察每次输入关键字之后网址的变化,如我输入高新,可以发现关键字在keywords=里面,那这样可以用input后,将关键字字符串和前面的网址连接起来。
3.观察每一页的网址变化,如第三页,可以发现页数是存在pagenum=里面的(第一页可能忽略了,你可以尝试的输入http://www.ofweek.com/newquery.action?keywords=高新&pagenum=1,发现会跳转第一页),这样就可以将页数和前面2拼接后的网址再拼接起来。
4.接下来就是看搜索关键词后网页的源代码(F12),可以发现每个文章都是在类名为zx-tl的div块标签里面,就可以通过select(“div.zx-tl”)提取出里面的文章的标题和链接,也可以用getElementsByClass(“zx-tl”);
5.再将每页文章的链接访问一遍,提取出文章的内容,而再次打开每篇文章的链接,发现文章的内容都是在类名为artical-content的div块里面,通过select(“div.artical-content”)把文章的内容提取出来,也可以用getElementsByClass(“artical-content”)提取。
6.把文章的内容和标题写入txt文件。
源代码
package test;
import java.io.*;
import java.util.Scanner;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.n