爬虫是什么?
爬虫,也叫网络爬虫或网页抓取,是一种自动从互联网上获取信息的程序或者脚本。爬虫可以根据一定的规则,模拟浏览器的行为,访问指定的网站,抓取网页上的数据,并进行存储或分析。
Java可以写爬虫吗?
Java是一种广泛使用的编程语言,具有跨平台、面向对象、高性能等特点。Java也可以用来编写爬虫程序,因为Java提供了很多网络编程和数据处理的类库,例如HttpURLConnection, Jsoup, HttpClient等。使用这些类库,可以方便地发送HTTP请求,解析HTML文档,提取所需的数据。
Java爬虫案例
下面给出一个简单的Java爬虫案例,用来抓取百度搜索结果的标题和链接。首先,我们需要导入以下几个类库:
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
然后,我们定义一个方法,用来发送HTTP请求,并返回响应的HTML文档:
public static Document getHtml(String url) throws IOException {
// 创建一个URL对象
URL u = new URL(url);
// 打开一个HTTP连接
HttpURLConnection conn = (HttpURLConnection) u.openConnection();
// 设置请求方法为GET
conn.setRequestMethod("GET");
// 设置连接超时和读取超时时间
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
// 判断响应码是否为200
if (conn.getResponseCode() == 200) {
// 使用Jsoup解析HTML文档
Document doc = Jsoup.parse(conn.getInputStream(), "utf-8", url);
// 关闭连接
conn.disconnect();
// 返回文档对象
return doc;
} else {
// 抛出异常
throw new IOException("请求失败,响应码为" + conn.getResponseCode());
}
}
接下来,我们定义一个方法,用来从HTML文档中提取搜索结果的标题和链接:
public static void parseHtml(Document doc) {
// 选择所有包含搜索结果的div元素
Elements results = doc.select("div.result");
// 遍历每个div元素
for (Element result : results) {
// 选择标题中的a元素
Element title = result.selectFirst("h3 a");
// 获取标题文本和链接地址
String text = title.text();
String link = title.attr("href");
// 打印标题和链接
System.out.println(text);
System.out.println(link);
}
}
最后,我们定义一个主方法,用来调用上面的两个方法,并传入一个搜索关键词:
public static void main(String[] args) throws IOException {
// 定义一个搜索关键词
String keyword = "java";
// 拼接百度搜索的URL地址
String url = "https://www.baidu.com/s?wd=" + keyword;
// 调用getHtml方法,获取HTML文档对象
Document doc = getHtml(url);
// 调用parseHtml方法,解析HTML文档,并打印搜索结果
parseHtml(doc);
}
小结
很多人一听到爬虫第一反应就是python,beautifulsoup等,固执地认为爬虫就应该学python。但实际上爬虫可以用其他语言实现,比如本文提到的java,甚至可以使用C/C++去实现。一些技术并不是只有某些语言能特定实现,只不过python实现更易于被人接受而已。希望本文能给你带来一个全新的视角,不再局限于使用python编写爬虫!