
public void parse(){
String htmlStr = "<table id=kbtable >"
+ "<tr> "
+ "<td width=123>"
+ "<div id=12>这里是要获取的数据1</div>"
+ "<div id=13>这里是要获取的数据2</div>"
+ "</td>"
+ "<td width=123>"
+ "<div id=12>这里是要获取的数据3</div>"
+ "<div id=13>这里是要获取的数据4</div>"
+ "</td> "
+ "</tr>"
+ "</table>";
Document doc = Jsoupparse(htmlStr);
// 根据id获取table
Element table = docgetElementById("kbtable");
// 使用选择器选择该table内所有的<tr> <tr/>
Elements trs = tableselect("tr");
//遍历该表格内的所有的<tr> <tr/>
for (int i = 0; i < trssize(); ++i) {
// 获取一个tr
Element tr = trsget(i);
// 获取该行的所有td节点
Elements tds = trselect("td");
// 选择某一个td节点
for (int j = 0; j < tdssize(); ++j) {
Element td = tdsget(j);
// 获取td节点的所有div
Elements divs = tdselect("div");
// 选择一个div
for (int k = 0; k < divssize(); k++) {
Element div = divsget(k);
//获取文本信息
String text = divtext();
//输出到控制台
Systemoutprintln(text);
}
}
}
}
Elements elestb = Jsoupselect("table");
Elelments elestr = elestbget(0)select("tr");
Elements eles= elestrget(1)select("a");
//第一个
String a1 = elestdget(0)text();
//第二个
String a2 = elestdget(1)text();
Elements elestd = elestrget(1)select("td");
//第三个
String td1 = elestdget(2)text();
//第四个
String td2 = elestdget(3)text();
获取所有双色球数据,但是返回的都是html页面,需要进行处理,最开始想着用dom4j处理,发现不可行。之后想着自己处理,但是又太麻烦了,然后找到了jsoup,使用起来非常简单。
*** 作、解析HTML格式的数据
jsoup的使用和dom4j非常类似,最开始都是先获得一个Document对象,然后获取需要的子元素或节点进行 *** 作,但是jsoup可以通过dom、css、和类似jquery的方法( 选择器 )来获取需要的数据。
选择器官方API
其他方法详见官方API
Node
Element
Elements
Whitelist官方API
总结一下Jsoup提供的方法:
获取元素的有:
getElementById(String id)
getElementsByTag(String tag)
getElementsByClass(String className)
getElementsByAttribute(String key)
siblingElements(), firstElementSibling(), lastElementSibling(); nextElementSibling(), previousElementSibling()
parent(), children(), child(int index)
获取元素数据:
attr(String key) 获取属性
attr(String key, String value) 设置属性
attributes() 获取所有属性
id(), className() and classNames()
text() 获取文字内容
text(String value) 设置文字内容
html() 获取html内容
html(String value) 设置html内容
outerHtml()
data() 获取类似script,style的数据内容
tag() and tagName()
*** 作HTML内容:
append(String html), prepend(String html)
appendText(String text), prependText(String text)
appendElement(String tagName), prependElement(String tagName)
html(String value)
我用Jsoup写爬虫,一般遇到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("关闭流出现异常!!!");
}
}
}
}
根据java网络编程相关的内容,使用jdk提供的相关类可以得到url对应网页的html页面代码。
针对得到的html代码,通过使用正则表达式即可得到我们想要的内容。
比如,我们如果想得到一个网页上所有包括“java”关键字的文本内容,就可以逐行对网页代码进行正则表达式的匹配。最后达到去除html标签和不相关的内容,只得到包括“java”这个关键字的内容的效果。
从网页上爬取的流程和爬取内容的流程基本相同,但是爬取的步骤会多一步。
需要先用img标签的正则表达式匹配获取到img标签,再用src属性的正则表达式获取这个img标签中的src属性的url,然后再通过缓冲输入流对象读取到这个url的信息,配合文件输出流将读到的信息写入到本地即可。
以上就是关于jsoup解析html的table中的内容全部的内容,包括:jsoup解析html的table中的内容、菜鸟求教 java爬虫 Jsoup 查找元素 求教如何select出来这四个数据,谢谢!、jsoup 的使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)