现今比较流行的爬虫语言,属Java、paython和c语言,笔者学习的是Java语言,所以介绍下使用Java如何爬取网页信息。
我们先从一个最原始的Java爬虫demo开始,再来看如何使用crawler4j这个框架进行爬虫。
Demo
使用Java的Url对象,指向网址并建立连接,获取输入流,解析流中的信息。该Demo只需一个jdk即可,不用引入其他jar包,下面请看源码。
public static void main(String[] args) throws IOException {
//新建一个url对象 通过构造方法传入url值
URL url = new URL("https://www.jd.com/");
//建立Java和url的一个连接,相当于我们访问网址,不同的是Java返回的是connection 我们肉眼返回的是网页内容
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//通过相应状态码判断是否访问成功
int code = connection.getResponseCode();
if (code != 200) {
return;
}
//获取connection对网页访问之后 的一个输入流,该流中包含了网页的信息内容
InputStream stream = connection.getInputStream();
//通过BufferedReader 获取流中的信息
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "utf-8"));
//输出信息
String r = null;
while ((r = reader.readLine()) != null) {
System.out.println(r);
}
}
这里的url传入时必须要带http协议,不能只传入jd.com,否则会报异常:
Exception in thread "main" java.net.MalformedURLException: no protocol: jd.com
我们看一下输出内容(仅截取了一小部分内容):
<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!</title>
<meta name="description" content="京东JD.COM-专业的综合网上购物商城,销售家电、数码通讯、电脑、家居百货、服装服饰、母婴、图书、食品等数万个品牌优质商品.便捷、诚信的服务,为您提供愉悦的网上购物体验!" />
<meta name="Keywords" content="网上购物,网上商城,手机,笔记本,电脑,MP3,CD,VCD,DV,相机,数码,配件,手表,存储卡,京东" />
<script type="text/javascript">
window.pageConfig = {
compatible: true,
preload: false,
navId: "jdhome2016",
timestamp: 1521683291000,
isEnablePDBP: 0,,
surveyTitle : "调查问卷",
surveyLink : "//s