我想从网页上提取一些数据,并把数据存入数据库!有兴趣的过来看一下!

时间:2022-12-11 15:28:33
我给大家举个例子,比如我要从网页http://sports.tom.com/yj/yjjfb0102.html中提取2003-2004意甲积分榜的所有数据,并且把数据存入我建好的数据库里面,那位大虾指点一下,最好有代码!谢谢各位了!分不够,再给!

11 个解决方案

#1


分不够:)

#2


关键是人家显示的数据格式都不一样,页面上也许还有其它的内容,所以很难处理,除非都是按照统一的格式还差不多.

#3


阳光商务短信群发王源码版(iSBSMS)  
下载地址:http://www.szlon.com
软件架构:三层结构(表现层+商业逻辑层+数据处理层)
开发语言:C#
数 据 库:Access2000
程序类别:Windows应用程序 
源码价格:680/600元(会员价)

欲购源代码请直接登陆我们的网站下单:http://www.szlen.com

软件运行环境:
   1.本软件使用微软最新的C#语言开发,开发工具包括:Microsoft Visual Studio .NET 2003,Macromedia Dreamweaver MX,Fireworks 4
   2.客户端需要安装.NET Framework SDK 1.1 版.
   3.支持等操作系统:Windows 98, Windows ME, Windows NT,Windows 2000, Windows Server 2003, Windows XP
---------------------------------------

软件名称:阳光商务邮件搜索王源码版(iSBES)  
下载地址:http://www.szlon.com
软件架构:三层结构(表现层+商业逻辑层+数据处理层)
开发语言:C#
数 据 库:Access2000
程序类别:Windows应用程序 
源码价格:580/500元(会员价)

欲购源代码请直接登陆我们的网站下单:http://www.szlen.com

软件运行环境:
   1.本软件使用微软最新的C#语言开发,开发工具包括:Microsoft Visual Studio .NET 2003,Macromedia Dreamweaver MX,Fireworks 4
   2.客户端需要安装.NET Framework SDK 1.1 版.
   3.支持等操作系统:Windows 98, Windows ME, Windows NT,Windows 2000, Windows Server 2003, Windows XP
---------------------------------------
技术支持
QQ:17506793
MSN:sun188com@hotmail.com
网站地址:http://www.szlen.com
联 系 人:陈先生
联系电话:0755-26742591 
传真号码:0755-26742783
电子邮件:sun188com@hotmail.com
软件演示:http://www.szlon.com
---------------------------------------

#4


楼上的应该封杀

#5


分不够再加,只要能实现功能就行,请帮帮忙啊!

#6


还有没有办法啊,我一开始做了一个下载网页的程序,但是不知道,怎么把里面的数据提取出来,存到数据库里面;这个功能真的很难实现吗?

#7


这个问题就这么难吗?没有一个人能解决吗?垃圾!

#8


网页下载后,根据网页源文件的结构,到相应的位置取相应的数据即可。

#9


http://cache.baidu.com/c?word=%B2%F0%3B%C8%A1%2Cweb%2C%D2%B3&url=http%3A//207%2E46%2E245%2E92/china/msdn/workshop/scrape%2Easp&b=12&user=baidu

#10


using System;
using System.IO;
using System.Net;
using System.Text;
using System.Data;
using Zhiyd.Config;
using Zhiyd.Data;

namespace catchPage
{
/// <summary>
/// 抓取网页
/// </summary>
public class CatchPage
{
string webProxyURL = null ;//= "http://192.168.0.1:808";
public CatchPage()
{
}
public string WebProxyURL
{
set 
{
webProxyURL = value;
}
get
{
return webProxyURL;
}
}
public string GetWebPage(string url)
{
HttpWebResponse webrep ;
StreamReader strrd ;
string content;

HttpWebRequest webR = (HttpWebRequest) HttpWebRequest.Create( url ); 

if( webProxyURL!=null )
{
WebProxy proxyObject = new WebProxy( webProxyURL ,true);     //设置web代理
webR.Proxy = proxyObject;
}
webR.KeepAlive = false;
webrep  = (HttpWebResponse) webR.GetResponse();
strrd   = new StreamReader(webrep.GetResponseStream(), Encoding.Default );
content = strrd.ReadToEnd(); //读取抓取的网页内容

byte[] bytes = System.Text.Encoding.Unicode.GetBytes( content ); //转换编码
System.Text.Encoding srcEncoding = System.Text.Encoding.Unicode;
System.Text.Encoding dstEncoding = System.Text.Encoding.GetEncoding("GB2312");
bytes = System.Text.Encoding.Convert(srcEncoding,dstEncoding, bytes);
content = System.Text.Encoding.GetEncoding("GB2312").GetString(bytes); //将转换过编码的网页输出
return  content;
}

/// <summary>
/// 从指定的串中获取界定的串
/// </summary>
/// <param name="pageText">原串</param>
/// <param name="startMark">起始界符</param>
/// <param name="endMark">结束界符</param>
/// <returns>要获取的串</returns>
public string GetText(string pageText,string startMark,string endMark)
{
int startIndex = pageText.IndexOf( startMark ) + startMark.Length;  //获取起始位置
pageText = pageText.Substring( startIndex );
int len = pageText.IndexOf( endMark );  //起始位置的序号就是要获取的字符串的长度
pageText = pageText.Substring( 0,len );
return  pageText;
}
}
    /// <summary>
    /// 网页串分析
    /// </summary>
    public class Analyze
    {
        public string Title   = "" ;
        public string Content = "" ;
        public string Time    = "" ;
        public string Author  = "" ;
        public string From    = "" ;
        
        
        struct DetailTableInfo
        {
            /// <summary>
            /// Mark表表名
            /// </summary>
            public const string DetailTableName = "t_CP_Mark" ;
            /// <summary>
            /// 记录ID字段名
            /// </summary>
            public const string ID              = "ID" ;
            /// <summary>
            /// 开始标记字段名
            /// </summary>
            public const string StartMark       = "StartMark" ;
            /// <summary>
            /// 结束标记字段名
            /// </summary>
            public const string EndMark         = "EndMark" ;
            /// <summary>
            /// URL字段名
            /// </summary>
            public const string URL             = "URL" ;
            /// <summary>
            /// 当前记录类型字段名
            /// </summary>
            public const string ItemType        = "ItemType" ;
            /// <summary>
            /// 主表的记录ID字段名
            /// </summary>
            public const string MainID          = "MainID" ;
            /// <summary>
            /// 父节点ID
            /// </summary>
            public const string ParentID        = "ParentID" ;
            /// <summary>
            /// Mark表中ItemType字段的值
            /// </summary>
            public struct ItemTypeValue
            {
                /// <summary>
                /// 当前记录是索引页标记
                /// </summary>
                public const string Main        = "Main" ;
                /// <summary>
                /// 当前记录是内容也标记
                /// </summary>
                public const string Detail      = "Detail" ;
            }
        }
        /// <summary>
        /// 主表信息
        /// </summary>
        struct MainTableInfo
        {
            /// <summary>
            /// 主表表名
            /// </summary>
            public const string MainTableName   = "t_CP_MainURL" ;
            /// <summary>
            /// 主键字段名
            /// </summary>
            public const string MainID          = "MainID" ;
            /// <summary>
            /// 标题字段名
            /// </summary>
            public const string Title           = "Title" ;
            
            public const string MainURL         = "URL" ;
        }
        
        
        CatchPage CP = new CatchPage();
        
        public Analyze()
        {
        }
        
        /// <summary>
        /// 获取内容页的URL列表
        /// </summary>
        /// <param name="Main">索引页URL和标记列表</param>
        /// <returns>URL和标题列表</returns>
        public string[,] GetIMainList( DataTable Main )
        {
            string[,] RtStr = new string[10,2];
            string pageStr = "" ;
            string StartMark ,EndMark , URL ;
            DataRow dr ;//= new DataRow();
            if( Main.Rows.Count > 0 )
            {
                URL = Convert.ToString( Main.Rows[0][MainTableInfo.MainURL] ) ;
                pageStr = CP.GetWebPage( URL );
                dr = Main.Rows.Find( Main.Rows[0][ DetailTableInfo.MainID ] );
            
            
            
                for( int i = 1 ; i < Main.Rows.Count ; i++ )
                {
                    if( dr == null )
                        break;
                    StartMark = Convert.ToString( Main.Rows[i][ DetailTableInfo.StartMark ] );
                    EndMark = Convert.ToString( Main.Rows[i][ DetailTableInfo.EndMark ] );
                    pageStr = CP.GetText( pageStr,StartMark,EndMark );
                    dr = Main.Rows.Find( Main.Rows[i][ DetailTableInfo.MainID ] );
                }
            }
            return  RtStr;
        }
        public string[,] GetItems( DataTable Detail )
        {
            string[,] RtStr = new string[10,2];
            return  RtStr;
        }        
    }  
}

#11


我只有思路,没有程序:
1、你需要下载指定的网页,在本地程序中读取该文件内容置入字符串
2、你把需要搜索的内容(根据指定页面格式和你的需要)写成正则表达式
3、提出全部符合条件的字串
4、将内容自定顺序写入数据库

缺点:针对性太强,不能搜索不同格式的页面
优点:肯定能实现,而且内容并不复杂(估计你的编程水平好,几十行就搞定了)

至于程序我就不写了,希望能看到高手们的表现。

#1


分不够:)

#2


关键是人家显示的数据格式都不一样,页面上也许还有其它的内容,所以很难处理,除非都是按照统一的格式还差不多.

#3


阳光商务短信群发王源码版(iSBSMS)  
下载地址:http://www.szlon.com
软件架构:三层结构(表现层+商业逻辑层+数据处理层)
开发语言:C#
数 据 库:Access2000
程序类别:Windows应用程序 
源码价格:680/600元(会员价)

欲购源代码请直接登陆我们的网站下单:http://www.szlen.com

软件运行环境:
   1.本软件使用微软最新的C#语言开发,开发工具包括:Microsoft Visual Studio .NET 2003,Macromedia Dreamweaver MX,Fireworks 4
   2.客户端需要安装.NET Framework SDK 1.1 版.
   3.支持等操作系统:Windows 98, Windows ME, Windows NT,Windows 2000, Windows Server 2003, Windows XP
---------------------------------------

软件名称:阳光商务邮件搜索王源码版(iSBES)  
下载地址:http://www.szlon.com
软件架构:三层结构(表现层+商业逻辑层+数据处理层)
开发语言:C#
数 据 库:Access2000
程序类别:Windows应用程序 
源码价格:580/500元(会员价)

欲购源代码请直接登陆我们的网站下单:http://www.szlen.com

软件运行环境:
   1.本软件使用微软最新的C#语言开发,开发工具包括:Microsoft Visual Studio .NET 2003,Macromedia Dreamweaver MX,Fireworks 4
   2.客户端需要安装.NET Framework SDK 1.1 版.
   3.支持等操作系统:Windows 98, Windows ME, Windows NT,Windows 2000, Windows Server 2003, Windows XP
---------------------------------------
技术支持
QQ:17506793
MSN:sun188com@hotmail.com
网站地址:http://www.szlen.com
联 系 人:陈先生
联系电话:0755-26742591 
传真号码:0755-26742783
电子邮件:sun188com@hotmail.com
软件演示:http://www.szlon.com
---------------------------------------

#4


楼上的应该封杀

#5


分不够再加,只要能实现功能就行,请帮帮忙啊!

#6


还有没有办法啊,我一开始做了一个下载网页的程序,但是不知道,怎么把里面的数据提取出来,存到数据库里面;这个功能真的很难实现吗?

#7


这个问题就这么难吗?没有一个人能解决吗?垃圾!

#8


网页下载后,根据网页源文件的结构,到相应的位置取相应的数据即可。

#9


http://cache.baidu.com/c?word=%B2%F0%3B%C8%A1%2Cweb%2C%D2%B3&url=http%3A//207%2E46%2E245%2E92/china/msdn/workshop/scrape%2Easp&b=12&user=baidu

#10


using System;
using System.IO;
using System.Net;
using System.Text;
using System.Data;
using Zhiyd.Config;
using Zhiyd.Data;

namespace catchPage
{
/// <summary>
/// 抓取网页
/// </summary>
public class CatchPage
{
string webProxyURL = null ;//= "http://192.168.0.1:808";
public CatchPage()
{
}
public string WebProxyURL
{
set 
{
webProxyURL = value;
}
get
{
return webProxyURL;
}
}
public string GetWebPage(string url)
{
HttpWebResponse webrep ;
StreamReader strrd ;
string content;

HttpWebRequest webR = (HttpWebRequest) HttpWebRequest.Create( url ); 

if( webProxyURL!=null )
{
WebProxy proxyObject = new WebProxy( webProxyURL ,true);     //设置web代理
webR.Proxy = proxyObject;
}
webR.KeepAlive = false;
webrep  = (HttpWebResponse) webR.GetResponse();
strrd   = new StreamReader(webrep.GetResponseStream(), Encoding.Default );
content = strrd.ReadToEnd(); //读取抓取的网页内容

byte[] bytes = System.Text.Encoding.Unicode.GetBytes( content ); //转换编码
System.Text.Encoding srcEncoding = System.Text.Encoding.Unicode;
System.Text.Encoding dstEncoding = System.Text.Encoding.GetEncoding("GB2312");
bytes = System.Text.Encoding.Convert(srcEncoding,dstEncoding, bytes);
content = System.Text.Encoding.GetEncoding("GB2312").GetString(bytes); //将转换过编码的网页输出
return  content;
}

/// <summary>
/// 从指定的串中获取界定的串
/// </summary>
/// <param name="pageText">原串</param>
/// <param name="startMark">起始界符</param>
/// <param name="endMark">结束界符</param>
/// <returns>要获取的串</returns>
public string GetText(string pageText,string startMark,string endMark)
{
int startIndex = pageText.IndexOf( startMark ) + startMark.Length;  //获取起始位置
pageText = pageText.Substring( startIndex );
int len = pageText.IndexOf( endMark );  //起始位置的序号就是要获取的字符串的长度
pageText = pageText.Substring( 0,len );
return  pageText;
}
}
    /// <summary>
    /// 网页串分析
    /// </summary>
    public class Analyze
    {
        public string Title   = "" ;
        public string Content = "" ;
        public string Time    = "" ;
        public string Author  = "" ;
        public string From    = "" ;
        
        
        struct DetailTableInfo
        {
            /// <summary>
            /// Mark表表名
            /// </summary>
            public const string DetailTableName = "t_CP_Mark" ;
            /// <summary>
            /// 记录ID字段名
            /// </summary>
            public const string ID              = "ID" ;
            /// <summary>
            /// 开始标记字段名
            /// </summary>
            public const string StartMark       = "StartMark" ;
            /// <summary>
            /// 结束标记字段名
            /// </summary>
            public const string EndMark         = "EndMark" ;
            /// <summary>
            /// URL字段名
            /// </summary>
            public const string URL             = "URL" ;
            /// <summary>
            /// 当前记录类型字段名
            /// </summary>
            public const string ItemType        = "ItemType" ;
            /// <summary>
            /// 主表的记录ID字段名
            /// </summary>
            public const string MainID          = "MainID" ;
            /// <summary>
            /// 父节点ID
            /// </summary>
            public const string ParentID        = "ParentID" ;
            /// <summary>
            /// Mark表中ItemType字段的值
            /// </summary>
            public struct ItemTypeValue
            {
                /// <summary>
                /// 当前记录是索引页标记
                /// </summary>
                public const string Main        = "Main" ;
                /// <summary>
                /// 当前记录是内容也标记
                /// </summary>
                public const string Detail      = "Detail" ;
            }
        }
        /// <summary>
        /// 主表信息
        /// </summary>
        struct MainTableInfo
        {
            /// <summary>
            /// 主表表名
            /// </summary>
            public const string MainTableName   = "t_CP_MainURL" ;
            /// <summary>
            /// 主键字段名
            /// </summary>
            public const string MainID          = "MainID" ;
            /// <summary>
            /// 标题字段名
            /// </summary>
            public const string Title           = "Title" ;
            
            public const string MainURL         = "URL" ;
        }
        
        
        CatchPage CP = new CatchPage();
        
        public Analyze()
        {
        }
        
        /// <summary>
        /// 获取内容页的URL列表
        /// </summary>
        /// <param name="Main">索引页URL和标记列表</param>
        /// <returns>URL和标题列表</returns>
        public string[,] GetIMainList( DataTable Main )
        {
            string[,] RtStr = new string[10,2];
            string pageStr = "" ;
            string StartMark ,EndMark , URL ;
            DataRow dr ;//= new DataRow();
            if( Main.Rows.Count > 0 )
            {
                URL = Convert.ToString( Main.Rows[0][MainTableInfo.MainURL] ) ;
                pageStr = CP.GetWebPage( URL );
                dr = Main.Rows.Find( Main.Rows[0][ DetailTableInfo.MainID ] );
            
            
            
                for( int i = 1 ; i < Main.Rows.Count ; i++ )
                {
                    if( dr == null )
                        break;
                    StartMark = Convert.ToString( Main.Rows[i][ DetailTableInfo.StartMark ] );
                    EndMark = Convert.ToString( Main.Rows[i][ DetailTableInfo.EndMark ] );
                    pageStr = CP.GetText( pageStr,StartMark,EndMark );
                    dr = Main.Rows.Find( Main.Rows[i][ DetailTableInfo.MainID ] );
                }
            }
            return  RtStr;
        }
        public string[,] GetItems( DataTable Detail )
        {
            string[,] RtStr = new string[10,2];
            return  RtStr;
        }        
    }  
}

#11


我只有思路,没有程序:
1、你需要下载指定的网页,在本地程序中读取该文件内容置入字符串
2、你把需要搜索的内容(根据指定页面格式和你的需要)写成正则表达式
3、提出全部符合条件的字串
4、将内容自定顺序写入数据库

缺点:针对性太强,不能搜索不同格式的页面
优点:肯定能实现,而且内容并不复杂(估计你的编程水平好,几十行就搞定了)

至于程序我就不写了,希望能看到高手们的表现。