
方法/步骤 本次经验是通过导入外部Jar进行对网页数据进行抓取,以下是我工程的分布图。 本例子中是使用Jquery进行处理页面事件 页面展示 后台是在siteproxyjsp中进行处理 5 最后将这其中需要的几个文件部署在此工程中去
Jsoup从Html文件中提取正文内容
示例代码:
File input = new File("/tmp/inputhtml");
Document doc = Jsoupparse(input, "UTF-8", "/examplecom/");
Element content = docgetElementById("content");
Elements links = contentgetElementsByTag("a");
for (Element link : links) {
String linkHref = linkattr("href");
String linkText = linktext();
}
jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的 *** 作方法来取出和 *** 作数据。
jsoup的主要功能如下:
1 从一个URL,文件或字符串中解析HTML;
2使用DOM或CSS选择器来查找、取出数据;
3 可 *** 作HTML元素、属性、文本;
//json页面返回格式{"data":{"blogs":[{"albid":865218,"id":12323,
orgjsonJSONObject
//返回多个json里面的id值
public static List findimgCrawIdList(String url) {
List imgCrawIdList=new ArrayList();
try {
JSONObject jo = getJsonObj(url,"utf-8");
JSONObject menu = jogetJSONObject("data");
JSONArray jsonArray = menugetJSONArray("blogs");
for (int i = 0; i < jsonArraylength(); i++) {
imgCrawIdListadd(jsonArraygetJSONObject(i)get("id"));
}
} catch (Exception e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
return imgCrawIdList;
}
/
根据网址,返回JSONObject对象
注:只适合请求响应为json格式网址
@param src 来源网址
@param code 编码方式
@author chitianxiang $22th March, 2012 - 2:42 pm
/
private static JSONObject getJsonObj(String src, String code) {
InputStreamReader reader = null;
BufferedReader in = null;
try {
URL url = new URL(src);
URLConnection connection = urlopenConnection();
connectionsetConnectTimeout(1000);
reader = new InputStreamReader(connectiongetInputStream(), code);
in = new BufferedReader(reader);
String line = null; //每行内容
int lineFlag = 0; //标记: 判断有没有数据
StringBuffer content = new StringBuffer();
while ((line = inreadLine()) != null) {
contentappend(line);
lineFlag++;
}
return lineFlag == 0 null : new orgjsonJSONObject(contenttoString());
} catch (SocketTimeoutException e) {
Systemoutprintln("连接超时!!!");
return null;
} catch (JSONException e) {
Systemoutprintln("网站响应不是json格式,无法转化成JSONObject!!!");
return null;
} catch (Exception e) {
Systemoutprintln("连接网址不对或读取流出现异常!!!");
return null;
} finally {
if (in != null) {
try {
inclose();
} catch (IOException e) {
Systemoutprintln("关闭流出现异常!!!");
}
}
if (reader != null) {
try {
readerclose();
} catch (IOException e) {
Systemoutprintln("关闭流出现异常!!!");
}
}
}
}
从父级不同点来定位,比如:
<div id=“id1”><p class ="xg1">XXXX</div><div id="id2"><p class ="xg1">XXXX</div>
。。。。
要定位第一个可以:
Elements e2 = docSelect("div#id1>pxg1");根据java网络编程相关的内容,使用jdk提供的相关类可以得到url对应网页的html页面代码。
针对得到的html代码,通过使用正则表达式即可得到我们想要的内容。
比如,我们如果想得到一个网页上所有包括“java”关键字的文本内容,就可以逐行对网页代码进行正则表达式的匹配。最后达到去除html标签和不相关的内容,只得到包括“java”这个关键字的内容的效果。
从网页上爬取的流程和爬取内容的流程基本相同,但是爬取的步骤会多一步。
需要先用img标签的正则表达式匹配获取到img标签,再用src属性的正则表达式获取这个img标签中的src属性的url,然后再通过缓冲输入流对象读取到这个url的信息,配合文件输出流将读到的信息写入到本地即可。
这几天正在研究。废话不多说,直接上代码,自己研究的,通过迭代抓取。pageList就是抓取的分页页面的全部链接地址 。
其中Document doc = NetUtilsgetDocument(url);是jsoup抓取页面的基本 *** 作。
public class HtmlAnalsysTest3 {
static String url = ">
以上就是关于java jsoup url获取的数据和网页的不同全部的内容,包括:java jsoup url获取的数据和网页的不同、Jsoup从Html文件中提取正文内容、jsoup能爬取json数据吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)