网页视频抓取工具 知乎(知乎上看到一个问题能利用爬虫技术做到哪些很有用的事情? )

优采云 发布时间: 2022-03-07 07:09

  网页视频抓取工具 知乎(知乎上看到一个问题能利用爬虫技术做到哪些很有用的事情?

)

  在 知乎 上看到一个问题,爬虫技术可以做哪些酷、有趣和有用的事情?我觉得它很有趣,所以我去学习正则表达式。听说正则表达式很有用。学习后,我认为这是一个非常有用的工具。问题和评论基本上都是用python写的爬虫。看了原理,感觉爬一个简单的静态网页还是挺容易的。就是获取网站html源码,然后解析需要的字段,最后得到字段处理(下载)。记得以前学java的时候有一个URL类好像有这个功能,于是翻了一下api文档,发现URLConnection确实可以得到html源码。

  先从核心写,获取网页源代码

  package mothed;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.URL;

import java.net.URLConnection;

/**

* 爬取网页源代码

* @author ganhang

*

*/

public class Spider {

public static String GetContent(String url) {

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

String result = "";

BufferedReader in = null;

try {

URL realUrl = new URL(url);

// 初始化链接

URLConnection connection = realUrl.openConnection();

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

in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));

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

String line;

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

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

System.out.println(line);

result += line;

}

} catch (Exception e) {

System.out.println("GetContent出现异常!" + e);

e.printStackTrace();

}

// 使用finally来关闭输入流

finally {

try {

if (in != null) {

in.close();

}

} catch (Exception e2) {

e2.printStackTrace();

}

}

return result;

}

}

  然后解析得到的Content,得到答案中想要的字段、标题、图片链接

<p>package bean;

import java.util.ArrayList;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

import mothed.Spider;

/**

* 知乎图片bean

* @author ganhang

*

*/

public class ZhiHuBean {

public String zhihuUrl;// 网页链接

public String question;// 问题名;

public ArrayList zhihuPicUrl;// 图片链接

public String getQuestion() {

return question;

}

public void setQuestion(String question) {

this.question = question;

}

public ArrayList getZhihuPicUrl() {

return zhihuPicUrl;

}

public void setZhihuPicUrl(ArrayList zhihuPicUrl) {

this.zhihuPicUrl = zhihuPicUrl;

}

// 构造方法初始化数据

public ZhiHuBean(String url) throws Exception {

zhihuUrl = url;

zhihuPicUrl = new ArrayList();

// 判断url是否合法

if (isZhuHuUrl(url)) {

url=getRealUrl(url);

System.out.println("正在抓取知乎链接:" + url);

// 根据url获取该问答的细节

String content = Spider.GetContent(url);

//System.out.println("content:"+content);

Matcher m;

// 匹配标题

m = Pattern.compile("zh-question-title.+?(.+?)").matcher(content);

if (m.find()) {

question = m.group(1);

}

// 匹配答案图片链接

m = Pattern.compile("

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线