注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Search的博客

不断学习中!

 
 
 

日志

 
 

HtmlCrawer  

2012-11-04 22:36:01|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
package crawler;
/************************************************************************************
爬取源:本地搜网站 局级单位数据 此程序最终生成的xml格式与标准格式略有不同,以需求中的标准模板为准。
*************************************************************************************/

import java.io.*;
import java.net.*;


public class HtmlCrawler {


public static void main(String arge[]){
 try{
 //保存路径
 OutputStreamWriter b3 = new OutputStreamWriter( new FileOutputStream("d:/上海数据(本地搜)/局1.xml"),"UTF-8");
 b3.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>"+"\n<Places>\n");
 int count =0;
for(int u =1;u<60;u++)//60是页数
 {
System.out.println(u);//打印爬取到第几页
//分页读取目录
 URL a = new URL("http://www.locoso.com/cate/f6762/"+String.valueOf(u)+"/ciwg34");
    //中学http://www.locoso.com/cate/702s2/"+String.valueOf(u)+"/ciwg34
//党团党校http://www.locoso.com/cate/t0ms2/"+String.valueOf(u)+"/ciwg34
 //公安http://www.locoso.com/cate/69t666s/"+String.valueOf(u)+"/ciwg34"
 //人民政府及街道办事处http://www.locoso.com/cate/ia33a/"+String.valueOf(u)+"/ciwg34
 //煤气燃气http://www.locoso.com/search/%E7%87%83%E6%B0%94%E7%85%A4%E6%B0%94/"+String.valueOf(u)+"/v2s622/ciwg34
 //使领馆http://www.locoso.com/cate/tm6666s/"+String.valueOf(u)+"/ciwg34
 //法院检察院http://www.locoso.com/cate/0tm666s/"+String.valueOf(u)+"/ciwg34
 //民政部门http://www.locoso.com/cate/izw3334/"+String.valueOf(u)+"/ciwg34
 BufferedReader b1 = new BufferedReader(new InputStreamReader(a.openStream(),"utf-8"));
 
 String i = null;
 String j= null;
 String k= null;
 String lat = null;
 String lon = null;
 String[] addr = null;
 String[] addr1 = null;
 String[] temp1 = null;

 int num=0;
 int flag=0;
 
 //读取某一地名的页面
 while ( (i=b1.readLine())!=null )
 {
 if((i.contains("</b>&nbsp;</a>"))&&(num!=10))
 {
 num++;
 addr=i.split("\"");
 System.out.println("p"+num);
 
 URL a1 = new URL("http://www.locoso.com"+addr[1]);
 
 BufferedReader b2 = new BufferedReader(new InputStreamReader(a1.openStream(),"utf-8"));
 while ( (j=b2.readLine())!=null )
 {
 if(flag==1)
 {
 j=j.replaceAll("\t", "");
 b3.write("\t<Place>\n");
 b3.write("\t\t<Tel>"+j+"</Tel>\n");
   
 flag=0;
 }
 if(j.contains("mapinit"))
 {
 addr1=j.split("'");
 
 b3.write("\t\t<Name>"+addr1[5]+"</Name>\n");
 b3.write("\t\t<Addr />\n");
 b3.write("\t\t<location>\n");
 
 //从页面上的QQmap中解析出经纬度
 if(!addr1[1].contains("."))
 {
 URL a2 = new URL("http://api.map.qq.com/geoc/?addr=上海市"+addr1[9]+"&output=jsonp");
 BufferedReader b4 = new BufferedReader(new InputStreamReader(a2.openStream(),"utf-8"));
 while ( (k=b4.readLine())!=null )
 {
 
 if(k.contains("pointy"))
 {
 temp1=k.split("\"");
     lat=temp1[3];
   
 }else if(k.contains("pointx"))
 { 
 temp1=k.split("\"");
 lon=temp1[3];
 
 }
 }
 b3.write("\t\t\t<lat>"+lat+"</lat>\n");
 b3.write("\t\t\t<lon>"+lon+"</lon>\n");
 }
 else
 {
 b3.write("\t\t\t<lat>"+addr1[1]+"</lat>\n");
 b3.write("\t\t\t<lon>"+addr1[3]+"</lon>\n");
 }
 b3.write("\t\t</location>\n");
 b3.write("\t\t<Address>"+addr1[9]+"</Address>\n");
 b3.write("\t</Place>\n");
 }
 else if (j.contains("<span>电话:</span>"))
 {
flag=1;
 }
 
 }
 b2.close();
 }
 else if (num==10)
 {
 break;
 }
 
 }
 
 b1.close();  
 
}
b3.write("</Places>");
b3.close();
System.out.println(count);
 }catch(MalformedURLException x){
  System.out.println("地址错误");
 }catch(IOException xx){
  System.out.println("文件读写错误");
  }
 }
}


  评论这张
 
阅读(130)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017