java知乎爬虫源码_零基础写Java知乎爬虫之获取知乎编辑推荐内容(3)

零基础写Java知乎爬虫之获取知乎编辑推荐内容(3) :

Zhihu.java源码:import java.util.ArrayList;

public class Zhihu {

public String question;// 问题

public String zhihuUrl;// 网页链接

public ArrayList answers;// 存储所有回答的数组

// 构造方法初始化数据

public Zhihu() {

question = "";

zhihuUrl = "";

answers = new ArrayList();

}

@Override

public String toString() {

return "问题:" + question + "\n链接:" + zhihuUrl + "\n回答:" + answers + "\n";

}

}

再新建一个Spider类来存放一些爬虫常用的函数。

Spider.java源码:import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.URL;

import java.net.URLConnection;

import java.util.ArrayList;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class Spider {

static String SendGet(String url) {

// 定义一个字符串用来存储网页内容

String result = "";

// 定义一个缓冲字符输入流

BufferedReader in = null;

try {

// 将string转成url对象

URL realUrl = new URL(url);

// 初始化一个链接到那个url的连接

URLConnection connection = realUrl.openConnection();

// 开始实际的连接

connection.connect();

// 初始化 BufferedReader输入流来读取URL的响应

in = new BufferedReader(new InputStreamReader(

connection.getInputStream(), "UTF-8"));

// 用来临时存储抓取到的每一行的数据

String line;

while ((line = in.readLine()) != null) {

// 遍历抓取到的每一行并将其存储到result里面

result += line;

}

} catch (Exception e) {

System.out.println("发送GET请求出现异常!" + e);

e.printStackTrace();

}

// 使用finally来关闭输入流

finally {

try {

if (in != null) {

in.close();

}

} catch (Exception e2) {

e2.printStackTrace();

}

}

return result;

}

static ArrayList GetZhihu(String content) {

// 预定义一个ArrayList来存储结果

ArrayList results = new ArrayList();

// 用来匹配标题

Pattern questionPattern = Pattern.compile("question_link.+?>(.+?)

Matcher questionMatcher = questionPattern.matcher(content);

// 用来匹配url,也就是问题的链接

Pattern urlPattern = Pattern.compile("question_link.+?href=\"(.+?)\"");

Matcher urlMatcher = urlPattern.matcher(content);

// 问题和链接要均能匹配到

boolean isFind = questionMatcher.find() && urlMatcher.find();

while (isFind) {

// 定义一个知乎对象来存储抓取到的信息

Zhihu zhuhuTemp = new Zhihu();

zhuhuTemp.question = questionMatcher.group(1);

zhuhuTemp.zhihuUrl = "http://www.zhihu.com" + urlMatcher.group(1);

// 添加成功匹配的结果

results.add(zhuhuTemp);

// 继续查找下一个匹配对象

isFind = questionMatcher.find() && urlMatcher.find();

}

return results;

}

}

以上就是零基础写Java知乎爬虫之获取知乎编辑推荐内容(3) 的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值