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
---------------------------------------
下载地址: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;
}
}
}
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、提出全部符合条件的字串
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
---------------------------------------
下载地址: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;
}
}
}
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、提出全部符合条件的字串
4、将内容自定顺序写入数据库
缺点:针对性太强,不能搜索不同格式的页面
优点:肯定能实现,而且内容并不复杂(估计你的编程水平好,几十行就搞定了)
至于程序我就不写了,希望能看到高手们的表现。