打印

[asp.net教程] 写个偷全国公交数据库的程序

写个偷全国公交数据库的程序

以前常听到别人做采集程序,今天俺也小试身手。。
  using system;
  using system.collections;
  using system.componentmodel;
  using system.data;
  using system.drawing;
  using system.web;
  using system.web.sessionstate;
  using system.web.ui;
  using system.net;
  using system.text;
  using system.text.regularexpressions;
  using system.io;
  using system.data.sqlclient;
  using system.web.ui.webcontrols;
  using system.web.ui.htmlcontrols;
   
  namespace temp
  {
   /// <summary>
   /// gethtmlsourcefromurl 的摘要说明。
   /// </summary>
   public class gethtmlsourcefromurl : system.web.ui.page
   {
   private sqlconnection con;
   
   private void page_load(object sender, system.eventargs e)
   {
   // 在此处放置用户代码以初始化页面
   
   if(!ispostback)
   {
   inserttodb();
   }
   
   }
   private void inserttodb()
   {
   
   for(int i=1;i<1000;i++)
   {
   string html = string.empty;
   string sqltext="insert into beijingbus(buslinenumber,html) values(@bln,@html)";
   string connectionstring=@"server=.xxxx;user id=xxxx;pwd=xxxxx;database=map";
   con =new sqlconnection(connectionstring);
   
   sqlcommand cmd = new sqlcommand(sqltext,con);
   
   string url=@"http://beijing.ibusdb.com/?busline="+i+"&s=busline&x=31&y=18"; // ^_^,这是取北京的 转到首页,换换参数,就可以取其它城市的了
   
   string content = string.empty;
   
   httpwebrequest request = (httpwebrequest)webrequest.create(url);

   httpwebresponse response =(httpwebresponse) request.getresponse();
   streamreader stream = new streamreader(response.getresponsestream(),encoding.getencoding("gb2312"));
   content =stream.readtoend();
   stream.close();
   response.close();
   
   int start=3487; //去广告 取正文
   int end= content.length-4222;//去广告 取正文
   if(end-start>0) //判断存在第i路公交
   {
   html=regex.replace(content.substring(start,end-start),@"<[^>]+>",""); //分离html代码
   
   try
   {
   cmd.parameters.add("@bln",sqldbtype.int).value =i;
   cmd.parameters.add("@html",sqldbtype.text).value= html;
   con.open();
   cmd.executenonquery();
   }
   catch(sqlexception err)
   {
   response.write(err.message);
   con.close();
   break;
   
   }
   con.close();
   
   
   }
   }
   }
   
   
   
  --表sql脚本:
  create table [dbo].[beijingbus](
   [id] [int] identity(1,1) not null,
   [buslinenumber] [int] null,
   [html] [nvarchar](max) collate chinese_prc_ci_as null
  ) on [primary]
   
  不会用签名:http://hi.baidu.com/陈立/blog

TOP

返回顶部
AYBlue

Processed in 0.052775 second(s), 7 queries.

当前时区 GMT+8, 现在时间是 2009-1-10 11:38 京ICP备06054220号

清除 Cookies - 联系我们 - 163K.com - Archiver - WAP