java程序抓取网页数据 和去重处理

jinwei877811422 2014-08-05 10:11:53
如题,坐等回复,最好带程序,附带大概讲解下,新手 ,网上的抓取看的好简单头大。
...全文
721 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinwei877811422 2014-08-10
  • 打赏
  • 举报
回复
package com.youche.data.carmodel.carfamily; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import com.youche.data.carmodel.crawler.DatabaseOperator; import com.youche.data.carmodel.util.Sousuo; public class Param { public static void main(String[] args) { DatabaseOperator dbop = new DatabaseOperator(); String url = "/config/spec/17050.html"; Sousuo sousuo = new Sousuo(); try { Document document = sousuo.askstop(url); Element fir = document.getElementById("config_data"); Element sec = fir.getElementById("tr_2000"); Element lis = sec.child(0); System.out.println(lis); // for (Element li : lis) { // // } } catch (Exception e) { // TODO: handle exception } } } 我自己写了个程序 可以抓取到网页的内容 但是 到javascript 就不好使了 熬夜等待中
tony4geek 2014-08-07
  • 打赏
  • 举报
回复
document.getElementById("tab-content"); html里面 有这个id 吗 ?
tony4geek 2014-08-07
  • 打赏
  • 举报
回复
那个url 里 , 你你想抓那部分内容。?
jinwei877811422 2014-08-07
  • 打赏
  • 举报
回复
private static String baseURL = "http://www.autohome.com.cn/";
大齐zy 2014-08-07
  • 打赏
  • 举报
回复
看你是垂直抓取,还是全站抓取,垂直抓取去看看webmigic,全站抓取可以看看heritrix。 针对url去重,可以使用url 做md5,然后再用布隆迪过滤。
tony4geek 2014-08-07
  • 打赏
  • 举报
回复
你 的 baseURL 是什么
jinwei877811422 2014-08-07
  • 打赏
  • 举报
回复
public static void main(String[] args) throws Exception { File file = new File("D:/autohome_car_type.txt"); FileWriter writer = new FileWriter(file); BufferedWriter bw = new BufferedWriter(writer); try { String url = baseURL + "/"; HttpRequest request = new HttpRequest(url); request.setMethod(HttpMethod.GET); request.setContentType("application/x-www-form-urlencoded"); HttpResponse response = client.request(request, 10000); String content = new String(GZip.unzip(response.getBody()), "gbk"); Document document = Jsoup.parse(content, "utf-8"); Element div = document.getElementById("tab-content"); Element divFir = div.children().first(); System.out.println(divFir); Elements brandBoxes = divFir.getElementsByTag("div.uibox"); for (Element brandBox : brandBoxes) { Elements dls = brandBox.getElementsByTag("dl"); if (dls == null || dls.isEmpty()) { continue; } for (Element dl : dls) { Elements dts = dl.getElementsByTag("dt"); Element dt = dts.first(); String brandName = dt.text(); Elements lis = dl.getElementsByTag("li"); for (Element li : lis) { Elements h4s = li.getElementsByTag("h4"); if (h4s == null || h4s.isEmpty()) { continue; } Element h4 = h4s.first(); String seriesName = h4.text(); // Elements divs = li.getElementsByTag("div"); System.out.println(brandName + "," + seriesName); bw.write(brandName + "," + seriesName); bw.write("\r\n"); } } } bw.flush(); } catch (Exception e) { e.printStackTrace(); } } // Element divFir = div.children().first(); 返回空值。。。怎么回事啊
jinwei877811422 2014-08-06
  • 打赏
  • 举报
回复
引用 4 楼 rui888 的回复:
你是抓取还是去重问题
主要是抓取 抓取大量3级页面的字段
tony4geek 2014-08-06
  • 打赏
  • 举报
回复
你是抓取还是去重问题
朗晴 2014-08-06
  • 打赏
  • 举报
回复
不懂,Mark
teemai 2014-08-06
  • 打赏
  • 举报
回复
抓网页数据,去除重复数据判断就行了。没什么特别的地方
teemai 2014-08-06
  • 打赏
  • 举报
回复
问题问细节一点。
tony4geek 2014-08-06
  • 打赏
  • 举报
回复
是这样的吗?

int j = 0;
		for (int i = 11; i < 13; i++) {
		String urlString = "http://mall.jumei.com/products/0-19-0-11-" + i+
		".html";
		URL url = new URL(urlString);
		URLConnection con = url.openConnection();
		InputStream is = con.getInputStream();
		byte[] bs = new byte[1024];
		int len;
		StringBuffer sb = new StringBuffer();
		while ((len = is.read(bs)) != -1) {
		sb.append(new String(bs, 0, len));
		}
		is.close();
		String content = sb.toString();
		Matcher m =
		Pattern.compile("(?s)<div class=\"num_warp_list_name\">(.*?)</div>.*?<span style=\"font-size:18px; font-weight:bolder; color:#ed145b;\">(.*?)</span").matcher(content);
		while (m.find()) {
		j++;
		System.out.println(m.group(1).replaceAll("\\s",
		"").replaceAll("<a.*?>(.*?)</a>",
		"$1")+"--->第"+j+"个------->"+m.group(2).replace("¥", "¥"));
		}
		}
SASDADSA2141 2014-08-05
  • 打赏
  • 举报
回复
直接用jsoup就可以了。 解析的时候就像jquery一样解析。
jinwei877811422 2014-08-05
  • 打赏
  • 举报
回复
主要是抓取 网页中的字段

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧