请教大侠网络数据采集的问题

egeg3000 2009-03-05 10:37:51
怎么样才能采集网络上的信息整合到我的sql数据库里?比如自动采集某天当当网的排行榜前十名的书名到我的页面上来?当然有免费的方法最好。。。大家帮帮忙。。。
平台为.net~~
...全文
102 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
egeg3000 2009-03-31
  • 打赏
  • 举报
回复
自己顶!!大家帮帮忙~~
egeg3000 2009-03-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jiezi316 的回复:]
你看看正则的作用就是了嘛。有点类似于通配符。
[/Quote]
我是菜鸟,能举个例子么。。。大侠帮帮忙。。。
jiezi316 2009-03-05
  • 打赏
  • 举报
回复
你看看正则的作用就是了嘛。有点类似于通配符。
egeg3000 2009-03-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jiezi316 的回复:]
引用 3 楼 egeg3000 的回复:
问题是我怎么知道它网站的书名的数据后台的名称?怎么就能从众多信息里摘取我需要的?能举个例子吗大侠,我是这方面新手,一点儿经验也没有的。。。谢谢。。。


这个后台数据没有什么关系吧?
要么你自己入库,要么你就直接链接到他的详细页?

怎么就能从众多信息里摘取我需要的?
正则的嘛。说简单点就是你从一个大的HTML字符串里找到你要的那段内容
[/Quote]
那我怎么编正则式才能从一个大的HTML字符串里找到我要的那段内容呢?
jiezi316 2009-03-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 egeg3000 的回复:]
问题是我怎么知道它网站的书名的数据后台的名称?怎么就能从众多信息里摘取我需要的?能举个例子吗大侠,我是这方面新手,一点儿经验也没有的。。。谢谢。。。
[/Quote]

这个后台数据没有什么关系吧?
要么你自己入库,要么你就直接链接到他的详细页?

怎么就能从众多信息里摘取我需要的?
正则的嘛。说简单点就是你从一个大的HTML字符串里找到你要的那段内容
egeg3000 2009-03-05
  • 打赏
  • 举报
回复
问题是我怎么知道它网站的书名的数据后台的名称?怎么就能从众多信息里摘取我需要的?能举个例子吗大侠,我是这方面新手,一点儿经验也没有的。。。谢谢。。。
  • 打赏
  • 举报
回复
我这个主要是用来采集 指定的网站的指定数据
你可以使用


WebClient对象获取指定网页的所有信息
然后通过正则表达式进行切割
  • 打赏
  • 举报
回复

/// <summary>
/// 分析并整理信息
/// </summary>
/// <returns></returns>
public string[] GetInfo()
{
WebClient wc = new WebClient();//创建WebClient对象
string msg;
try
{
byte[] byDats = wc.DownloadData(this.TextBox1.Text);//下载指定的Url资源
msg = UnicodeEncoding.Default.GetString(byDats);//转换编码
}
catch (Exception ex)
{
msg = ex.Message;
}
#region 正则切割
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"·\s*<a[^>]*>(?<title>[^<]*)</a>\s*<font[^>]*>(?<date>[^<]*)</font>");
string result = string.Empty;
foreach (Match m in reg.Matches(msg))
{
result += m.Groups["title"].Value + ",";//新闻标题
result += m.Groups["date"].Value + "|" + "\r\n";//时间
}
#endregion 正则切割结束

string[] strResult = result.Split('|');
ArrayList al = new ArrayList();
for (int i = 0; i < strResult.Length; i++)
{
al.Add(strResult[i]);

}
string[] ds;
ArrayList al2 = new ArrayList();
for (int i = 0; i < al.Count; i++)
{
ds = al[i].ToString().Split(',');
foreach (string s in ds)
{
al2.Add(s);
}
}
return (string[])al2.ToArray(typeof(string));
}

/// <summary>
/// 获取文章标题
/// </summary>
/// <returns></returns>
public string[] GetTitle()
{
ArrayList al = new ArrayList();
string[] Titles = GetInfo();
for (int i = 0; i < Titles.Length; i++)
{
if ((i % 2) == 0)
{
al.Add(Titles[i]);
}
}
return ((string[])al.ToArray(typeof(string)));
}
/// <summary>
/// 获取文章发布日期
/// </summary>
/// <returns></returns>
public string[] GetDate()
{
ArrayList al = new ArrayList();
string[] Dates = GetInfo();
for (int i = 0; i < Dates.Length; i++)
{
if ((i % 2) != 0)
{
al.Add(Dates[i]);
}
}
return ((string[])al.ToArray(typeof(string)));
}
/// <summary>
/// 显示数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button2_Click(object sender, EventArgs e)
{
string[] ss = GetTitle();
Response.Write("标题"+"<br>");
for (int i = 0; i < ss.Length; i++)
{
Response.Write(ss[i]);
Response.Write("<br>");

}
string[] ss2 = GetDate();
Response.Write("日期"+"<br>");
for (int j = 0; j < ss2.Length; j++)
{
Response.Write(ss2[j]);
Response.Write("<br>");
}

}
protected void Button3_Click(object sender, EventArgs e)
{
string [] titles=GetTitle();
string [] dates=GetDate();
for (int i = 0; i < ((titles.Length + dates.Length) / 2); i++)
{
Insert(titles[i], dates[i]);
}


}

public void Insert(string title,string date)
{
string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["conn"].ToString();
SqlConnection conn = new SqlConnection(connStr);
string sqlStr = "insert into news(title,sendtime) values(@title,@date)";
SqlCommand cmd = new SqlCommand(sqlStr,conn);
cmd.Parameters.Add("@title",SqlDbType.VarChar,200);
cmd.Parameters.Add("@date",SqlDbType.VarChar,50);
cmd.Parameters["@title"].Value = title;
cmd.Parameters["@date"].Value = date;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
egeg3000 2009-03-05
  • 打赏
  • 举报
回复
自己顶~~~

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧