麻烦的是你这个URL中含有中文 ,传入时会乱码,导致查询结果为空。
不知道,我说的对不对,我们可以讨论一下。这几天正在研究。废话不多说,直接上代码,自己研究的,通过迭代抓取。pageList就是抓取的分页页面的全部链接地址 。
其中Document doc = NetUtilsgetDocument(url);是jsoup抓取页面的基本 *** 作。
public class HtmlAnalsysTest3 {
static String url = ">
判断下一页的标示比如class一页页抓咯,比如下一页的class是next那么抓取可以简单的这样写:
grab(url) {
var content = getPageContent(url);
var $ = convertContentToJqueryObj(content);//将content装换为jQuery对象比如使用cheerio之类的
var $next = $('next');
//处理需要抓取的数据
parseContent(content);
// 判断是否有下一页 有则递归抓取
if ($nextlength) {
grab($nextattr('url'));
}
}Jsoup从Html文件中提取正文内容\x0d\示例代码:\x0d\Fileinput=newFile("/tmp/inputhtml");\x0d\Documentdoc=Jsoupparse(input,"UTF-8","/examplecom/");\x0d\\x0d\Elementcontent=docgetElementById("content");\x0d\Elementslinks=contentgetElementsByTag("a");\x0d\for(Elementlink:links){\x0d\StringlinkHref=linkattr("href");\x0d\StringlinkText=linktext();\x0d\}\x0d\jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的 *** 作方法来取出和 *** 作数据。\x0d\jsoup的主要功能如下:\x0d\1从一个URL,文件或字符串中解析HTML;\x0d\2使用DOM或CSS选择器来查找、取出数据;\x0d\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("关闭流出现异常!!!");
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)