JAVA培训
位置:首页Java开发Java EE
 问题状态
 
获取网站中某网页中列表的数据再存进数据库中..??
 悬赏分:100  已经过期   过期时间2007-6-19 00:12
比如网页中有个四行三列的表单,第一行是标题,第二行开始是要获取的数据,我想把该网页中表单的数据获取出来再存进自已的数据库不知道怎样做???
提问者:sping031@126.com  - 头衔:开发爱好者   
    
    
 回复答案 共22条
  ajax OK
    回答者:huangyuanxin@2008.sina.com  - 头衔:开发爱好者 2008-9-2 19:33:26  

  从网页上精确提取数据   
  '   
  '   为运行本程序,应在“菜单->工程->部件”中添加“Microsoft   Internet   Controls”   
  '   并在“菜单->工程->引用”中添加“Microsoft   HTML   Object   Library”   
  '   
  '   为了简洁,程序仅下载九只个股的基本信息   
  Option   Explicit   
  Private   Const   Form_ID   =   1   
  Dim   Code(9)   As   String   
  Dim   Current   As   Long   
  Private   Sub   Form_Load()   
      Form1.MousePointer   =   11   
      '   以下是个股代码   
      '   为了程序简洁,这里仅使用九只代码。   
      '   而在真实环境中,应从数据文件中读入全部个股代码。   
      Code(0)   =   "600001":   Code(1)   =   "600002":   Code(2)   =   "600003"   
      Code(3)   =   "600005":   Code(4)   =   "600006":   Code(5)   =   "600007"   
      Code(6)   =   "600008":   Code(7)   =   "600009":   Code(8)   =   "600010"   
      Current   =   0   
      WebBrowser1.Navigate   "www.stockstar.com.cn"       '   起始网址   
  End   Sub   
    
  Private   Sub   WebBrowser1_DocumentComplete(ByValpDisp   As   Object,   URL   As   Variant)   
      Dim   i,   k   
      Text2   =   WebBrowser1.LocationURL         '   显示当前网址   
      '   判断当前网页是否全部调入完毕   
      If   Not   (pDisp   Is   WebBrowser1.Object)   Then   Exit   Sub   
      On   Error   Resume   Next   
      Select   Case   Text2   
      Case   "http://www.stockstar.com.cn/home.htm"     '   当进入主页面时执行以下程序   
        For   i   =   0   To   WebBrowser1.Document.Forms(Form_ID).length   -   1   
              '   找到代码输入框后填入个股代码   
              If   WebBrowser1.Document.Forms(Form_ID)(i).Name   =   "code"   Then   _   
                  WebBrowser1.Document.Forms(Form_ID)(i).Value   =   Code(Current)   
              '   在下拉式列表中进行选择   
              If   WebBrowser1.Document.Forms(Form_ID)(i).Name   =   "target"   Then   
                  For   k   =   0   To   WebBrowser1.Document.Forms(Form_ID)(i).length   -   1   
                        If   WebBrowser1.Document.Forms(Form_ID)(i).Options(k).Text   _   
                                            =   "个股资料"   Then   
                            WebBrowser1.Document.Forms(Form_ID)(i).Options(k).Selected   =   True   
                            Exit   For   
                        End   If   
                  Next   k   
              End   If   
              '   点击按钮   
              If   WebBrowser1.Document.Forms(Form_ID)(i).Value   =   "   查询   "   Then   _   
                  WebBrowser1.Document.Forms(Form_ID)(i).Click   
        Next   
      Case   Else       '   当进入数据页面时执行以下程序   
        For   i   =   0   To   WebBrowser1.Document.All.length   -   1   
              If   WebBrowser1.Document.All(i).tagName   =   "PRE"   Then   
                  '   精确提取数据   
                  Text1   =   Text1   +   Code(Current)   +   vbCrLf   +   _   
                                  WebBrowser1.Document.All(i).innerText   +   vbCrLf   
                  Exit   For   
              End   If   
        Next   
        '   数据存盘   
        Open   "C:\Data2.Txt"   For   Append   As   #1   
        Print   #1,   Text1:   Text1   =   "":   Close   #1   
        '   换下一只股票   
        Current   =   Current   +   1   
        If   Current   >=   9   Then   
            '   上网任务完成后,应在此调用自动挂断过程。   
            Form1.MousePointer   =   0:   MsgBox   "Finished!":   End   
        End   If   
        '   回退到主页面,查询下一只股票的信息   
        WebBrowser1.GoBack   
      End   Select   
  End   Sub
    回答者:luyougong@sohu.com  - 头衔:开发爱好者 2008-7-25 11:03:12  

  看了才知道!
    回答者:gaoju@live.cn  - 头衔:开发爱好者 2008-5-11 16:17:25  

  ajax是最好的实现,不过实现方法我不是很清楚也没研究过啊 
    回答者:duguwenwu610@163.com  - 头衔:开发爱好者 2008-1-14 14:26:38  

  用ajax应该可以实现!!
1.首先用JAVASCRIPT来获取值表格的值:
var valueTable = document.getElementById("valueTable") ;
2.然后就可以用这个表达式来输出值:
for (var i=1;i<valueTable.childNodes.length;i++)
{
   var valueCell1 = valueTable.childNodes[0].childNodes[i].nodeValue ;
var valueCell2 = valueTable.childNodes[0].childNodes[i].nodeValue ;
var valueCell3 = valueTable.childNodes[0].childNodes[i].nodeValue ;
}
3.知道了这些值,之后就可以传送了
(注意)1.valueTable代表表格的节点
2.valueCell1代表表格中的值
3.valueTable.childNodes.length代表valueTable表格中的节点个数

    回答者:m441748725@163.com  - 头衔:开发爱好者 2007-12-4 22:15:56  

  你可以先取出放session中,提交后在存入库中
    回答者:zhaoyanbin2003@163.com  - 头衔:开发爱好者 2007-11-16 11:45:19  

   程序一:从网页上精确提取数据   
  '   
  '   为运行本程序,应在“菜单->工程->部件”中添加“Microsoft   Internet   Controls”   
  '   并在“菜单->工程->引用”中添加“Microsoft   HTML   Object   Library”   
  '   
  '   为了简洁,程序仅下载九只个股的基本信息   
  Option   Explicit   
  Private   Const   Form_ID   =   1   
  Dim   Code(9)   As   String   
  Dim   Current   As   Long   
  Private   Sub   Form_Load()   
      Form1.MousePointer   =   11   
      '   以下是个股代码   
      '   为了程序简洁,这里仅使用九只代码。   
      '   而在真实环境中,应从数据文件中读入全部个股代码。   
      Code(0)   =   "600001":   Code(1)   =   "600002":   Code(2)   =   "600003"   
      Code(3)   =   "600005":   Code(4)   =   "600006":   Code(5)   =   "600007"   
      Code(6)   =   "600008":   Code(7)   =   "600009":   Code(8)   =   "600010"   
      Current   =   0   
      WebBrowser1.Navigate   "www.stockstar.com.cn"       '   起始网址   
  End   Sub   
    
  Private   Sub   WebBrowser1_DocumentComplete(ByValpDisp   As   Object,   URL   As   Variant)   
      Dim   i,   k   
      Text2   =   WebBrowser1.LocationURL         '   显示当前网址   
      '   判断当前网页是否全部调入完毕   
      If   Not   (pDisp   Is   WebBrowser1.Object)   Then   Exit   Sub   
      On   Error   Resume   Next   
      Select   Case   Text2   
      Case   "http://www.stockstar.com.cn/home.htm"     '   当进入主页面时执行以下程序   
        For   i   =   0   To   WebBrowser1.Document.Forms(Form_ID).length   -   1   
              '   找到代码输入框后填入个股代码   
              If   WebBrowser1.Document.Forms(Form_ID)(i).Name   =   "code"   Then   _   
                  WebBrowser1.Document.Forms(Form_ID)(i).Value   =   Code(Current)   
              '   在下拉式列表中进行选择   
              If   WebBrowser1.Document.Forms(Form_ID)(i).Name   =   "target"   Then   
                  For   k   =   0   To   WebBrowser1.Document.Forms(Form_ID)(i).length   -   1   
                        If   WebBrowser1.Document.Forms(Form_ID)(i).Options(k).Text   _   
                                            =   "个股资料"   Then   
                            WebBrowser1.Document.Forms(Form_ID)(i).Options(k).Selected   =   True   
                            Exit   For   
                        End   If   
                  Next   k   
              End   If   
              '   点击按钮   
              If   WebBrowser1.Document.Forms(Form_ID)(i).Value   =   "   查询   "   Then   _   
                  WebBrowser1.Document.Forms(Form_ID)(i).Click   
        Next   
      Case   Else       '   当进入数据页面时执行以下程序   
        For   i   =   0   To   WebBrowser1.Document.All.length   -   1   
              If   WebBrowser1.Document.All(i).tagName   =   "PRE"   Then   
                  '   精确提取数据   
                  Text1   =   Text1   +   Code(Current)   +   vbCrLf   +   _   
                                  WebBrowser1.Document.All(i).innerText   +   vbCrLf   
                  Exit   For   
              End   If   
        Next   
        '   数据存盘   
        Open   "C:\Data2.Txt"   For   Append   As   #1   
        Print   #1,   Text1:   Text1   =   "":   Close   #1   
        '   换下一只股票   
        Current   =   Current   +   1   
        If   Current   >=   9   Then   
            '   上网任务完成后,应在此调用自动挂断过程。   
            Form1.MousePointer   =   0:   MsgBox   "Finished!":   End   
        End   If   
        '   回退到主页面,查询下一只股票的信息   
        WebBrowser1.GoBack   
      End   Select   
  End   Sub
    回答者:luyougong@sohu.com  - 头衔:开发爱好者 2007-11-16 8:51:38  

  你是想对table中的数据直接进行操作吗?那里边有标签吗?
    回答者:fangling618@163.com  - 头衔:初级程序员 2007-11-15 10:36:43  

  kidchild@163.com你好,用javascritp是可以取得列表(table)中的值,请问一下这个值怎怎么传到后到中去呢?
    回答者:dhappy05@126.com  - 头衔:开发爱好者 2007-11-6 15:41:44  

  有的是input表单还是有struts里的thml里的标签
如果有input就用request.getParameter()来取的你想要的值
如果是有struts在ActionForm里就会自动把前台的数据存到相应的对像里。
    回答者:gao407584979@126.com  - 头衔:开发爱好者 2007-8-29 9:21:30  

  用ajax应该可以实现~
我ajax学的比较烂,一时半会写不出来~
    回答者:gao407584979@126.com  - 头衔:开发爱好者 2007-8-29 9:20:30  

  直接用javascript取得:
  var datavalue = document.all.tablename.rows(i+1).cells[i].innerText;
    由于第一行是表头,所以rows中的参数是i+1,注意是().
   
    回答者:kidchild@163.com  - 头衔:开发爱好者 2007-8-28 10:26:10  

  request.getParameter("要取的名称");来取到你要的,
然后再要insert int 表名 (name1,name2,...,) values(?,?,?,...,?)来存到数据库中
    回答者:colin119520@163.com  - 头衔:开发爱好者 2007-7-22 14:45:03  

  自己去看看书吧.
    回答者:dmewy213@gmail.com  - 头衔:开发爱好者 2007-7-4 0:09:10  

   另存为xml文件,在解析xml将数据写进数据库。
    回答者:sshzhangwg@163.com  - 头衔:开发爱好者 2007-6-29 12:44:05  

  有的是input表单还是有struts里的thml里的标签
如果有input就用request.getParameter()来取的你想要的值
如果是有struts在ActionForm里就会自动把前台的数据存到相应的对像里
    回答者:ljbm34@yahoo.com.cn  - 头衔:开发爱好者 2007-6-29 1:59:34  

  有的是input表单还是有struts里的thml里的标签
如果有input就用request.getParameter()来取的你想要的值
如果是有struts在ActionForm里就会自动把前台的数据存到相应的对像里。
    回答者:sunnaiwei001zp@163.com  - 头衔:开发爱好者 2007-6-27 9:35:17  

  你有网站的修改权的话,就用form表单比较简单,你的本来也是个表单,所以实现起来很简单
    回答者:taidugaodu@163.com  - 头衔:开发爱好者 2007-6-22 18:47:01  

  你可以使用IFrame实现,实际上IFrame与AJAX没有太多的本质区别
    回答者:z2000lxh@sina.com  - 头衔:开发爱好者 2007-6-22 13:08:02  

  你有网页的修改权吗?如果有的话需要加FORM表单~就可以了
    回答者:hellojazz@163.com  - 头衔:开发爱好者 2007-6-19 22:47:05  

  这个页面是任何一个网站的页面么?还是你自己写的?
    回答者:lisevens@163.com  - 头衔:开发爱好者 2007-6-19 15:31:20  

  用ajax应该可以实现~
我ajax学的比较烂,一时半会写不出来~
    回答者:xiaoxiaold888@163.com  - 头衔:开发爱好者 2007-6-19 0:41:30  

我的回答:
回答即可得10分,被采纳则可得50分+悬赏分。
  验证码

 
 
最新问题
欢迎使用本系统,智囊团。踊跃回答,赢得积分。

使用有问题请到 帮助
 
关于我们 | 商务合作 | 招聘信息 | 客服中心 | 服务条款 | 免责声明 | 网站导航 |java培训QQ留言
Copyright 2007 zhinangtuan.net.cn all rights reserved 版权所有