我是在一篇博客里一个一个地测试(HttpClient、Jsoup、HtmlUnit、Watij、Selenium、Webspec)各种问题找不到对应的jar包等
,最终只有一个能用Jsoup(运气好找到了)。
原创文章,转载请注明出处:http://www.yshjava.cn/post/415.html(好像上不了了)
其他人转的博客:https://blog.youkuaiyun.com/limm33/article/details/78811165
需要的jar包
下载一个 jsoup-1.6.1.jar (一个外国网站可以免费下载:http://www.java2s.com/Code/Jar/j/Downloadjsoup161jar.htm )
com.im.base_one.java代码(复制运行就ok了)
package com.im.base_one;
import java.io.IOException;
import org.jsoup.Jsoup;
public class zhuabao {
public static void main(String[] args) throws IOException {
Jsoup_fangfa();
}
/**
* 基于Jsoup抓取网页内容
*/
public static void Jsoup_fangfa() throws IOException {
//目标页面
String url = "https://www.baidu.com/"; //需要获取的网站
//使用Jsoup连接目标页面,并执行请求,获取服务器响应内容
String html = Jsoup.connect(url).execute().body();
//打印页面内容
//System.out.println(html);
//后面的,就是写你要获取的数据(我一般用正则获取所需要的数据)
//正则努力写中。。。哈哈哈
//正则部分已写出
String rgex="<li class=\"sky skyid lv2 on\">(.*?)</li>"; //(.*?)所有内容 注意空格(好像也算入)
List<String> lists = getSubUtil(html,rgex);
for (String string : lists) {
System.out.println(string);
}
//基本完成了,可以把获取的 System.out.println(string); 中的string传到页面(jsp)
//$("#formLogin").html("传过来的内容");
}
//正则表达式匹配两个指定字符串中间的内容 返回:
public static List<String> getSubUtil(String soap,String rgex){
List<String> list = new ArrayList<String>();
//Pattern pattern = Pattern.compile(rgex);// 编译正则表达式 当遇到 换行符 就匹配不出了
Pattern pattern = Pattern.compile(rgex, Pattern.CASE_INSENSITIVE | Pattern.DOTALL);// 编译正则表达式
Matcher m = pattern.matcher(soap);//通过 matcher 进行匹配
while (m.find()) {
int i = 1;
list.add(m.group(i));
i++;
}
return list;
}
}