这个程序实现两个功能,第一,从http://group.hexun.com/ZHH1997/member.html中读取"用户名"写到一文本文件中,如"ZHH边缘"等,第二,将文本文件中的诸个用户名,填到http://group.hexun.com/qiniuzhe/invite.aspx(代码附后:)
的输入框内,再点击,"发送邀请"第二步的网页代码如下:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<title>邀请首页</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="/inc/h_css_manage.css" rel="stylesheet" type="text/css">
<link href="/template/h_css_manage.css" rel="stylesheet" type="text/css">
<script language="javascript">
function cancelinvite()
{
window.reload();
return false;
}
function submitinvite(e,e1,e2)
{
re = /[a-zA-Z][_a-zA-Z0-9]{2,100}/;
if(e.value == "" || e1.value == "")
{
alert("请填入用户名和邀请说明!");
return false;
}
if(e2.value==2)
{
if(!re.test(e.value))
{
alert("输入正确的博客名!");
return false;
}
}
return true;
}
</script>
</HEAD>
<body class="aud" topmargin="0" leftmargin="0">
<div align="center">
<div style="WIDTH:956px; BACKGROUND-COLOR:#f6f6f6" align="left">
<!-- top_1:on -->
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="li_aud_02" style="BACKGROUND-IMAGE: url(../images/li_aud_01.gif)">
<tr>
<td width="60%">
<div class="li_aud_02">
<ul class="li_aud_04">
<li class="li_aud_05">
<a href="/qiniuzhe/default.html" target="_blank" class="liadd_04">骑牛者</a></li>
<li class="li_aud_05_2"></li>
</ul>
</div>
</td>
<td width="40%">
<div class="li_aud_02">
<ul class="li_aud_04">
<li class='li_aud_05'><a href='http://hexun.com/metababy/default.html' target='_blank' class='li_2'>[metababy]</a> <a href='http://wayup.hexun.com/quit.aspx?gourl=http://group.hexun.com/qiniuzhe/default.html' class='li_2'>登 出</a></li>
<li class="li_aud_05">
<a href="http://group.hexun.com" target="_blank" class="li_2">朋友圈</a>
<li class="li_aud_05">
<a href="http://tribe.hexun.com" target="_blank" class="li_2">和讯部落</a>
<li class="li_aud_05_2">
<a href="http://www.hexun.com" target="_blank" class="li_2">和讯首页</a></li>
</ul>
</div>
</td>
</tr>
</table>
的输入框内,再点击,"发送邀请"第二步的网页代码如下:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<title>邀请首页</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="/inc/h_css_manage.css" rel="stylesheet" type="text/css">
<link href="/template/h_css_manage.css" rel="stylesheet" type="text/css">
<script language="javascript">
function cancelinvite()
{
window.reload();
return false;
}
function submitinvite(e,e1,e2)
{
re = /[a-zA-Z][_a-zA-Z0-9]{2,100}/;
if(e.value == "" || e1.value == "")
{
alert("请填入用户名和邀请说明!");
return false;
}
if(e2.value==2)
{
if(!re.test(e.value))
{
alert("输入正确的博客名!");
return false;
}
}
return true;
}
</script>
</HEAD>
<body class="aud" topmargin="0" leftmargin="0">
<div align="center">
<div style="WIDTH:956px; BACKGROUND-COLOR:#f6f6f6" align="left">
<!-- top_1:on -->
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="li_aud_02" style="BACKGROUND-IMAGE: url(../images/li_aud_01.gif)">
<tr>
<td width="60%">
<div class="li_aud_02">
<ul class="li_aud_04">
<li class="li_aud_05">
<a href="/qiniuzhe/default.html" target="_blank" class="liadd_04">骑牛者</a></li>
<li class="li_aud_05_2"></li>
</ul>
</div>
</td>
<td width="40%">
<div class="li_aud_02">
<ul class="li_aud_04">
<li class='li_aud_05'><a href='http://hexun.com/metababy/default.html' target='_blank' class='li_2'>[metababy]</a> <a href='http://wayup.hexun.com/quit.aspx?gourl=http://group.hexun.com/qiniuzhe/default.html' class='li_2'>登 出</a></li>
<li class="li_aud_05">
<a href="http://group.hexun.com" target="_blank" class="li_2">朋友圈</a>
<li class="li_aud_05">
<a href="http://tribe.hexun.com" target="_blank" class="li_2">和讯部落</a>
<li class="li_aud_05_2">
<a href="http://www.hexun.com" target="_blank" class="li_2">和讯首页</a></li>
</ul>
</div>
</td>
</tr>
</table>
解决方案 »
- The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.
- C++结构类型 转化为C#对应的类型问题
- 实例化CAD中的AcadAcCmColor对象,异常
- 请问学习T-SQL那本书比较好?
- 菜鸟提问~
- C#文件操作问题
- C#中new的问题
- 请高手指点一下关于“代表”的问题
- 系统的事件查看器有没有编程接口可以进行查询
- c#中如何将"65"这个字符串转换成整数65,或者是将整数65转换成字符串"65"
- 急,数据库操作老是不成功...
- ASP.net中使用datagrid显示文章标题,太长的话会另起一行,怎样可以使显示的内容超过指定字符就显示...?
<div class="li_aud_02_1" align="right">
<div class="liadd_03_3">
<div><a href="/qiniuzhe/default.html" title="http://group.hexun.com/qiniuzhe" class="liadd_05">http://group.hexun.com/qiniuzhe</a></div>
<div><a href="/qiniuzhe/default.html" class="liadd_04" onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://group.hexun.com/qiniuzhe/default.html');return(false);">设为首页</a> <a href="javascript:window.external.AddFavorite('http://group.hexun.com/qiniuzhe/default.html', '骑牛者"/group.hexun.com/qiniuzhe/default.html')" class="liadd_04" target="_self">收藏本圈</a> <a href='javascript:copy_url("http://group.hexun.com/qiniuzhe/default.html")' class="liadd_04">复制圈址</a></div>
</div>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="li_aud_02_2"><a href="/qiniuzhe/default.html" class="li_top">本圈首页</a></td>
<td class="li_aud_02_2"><a href="/qiniuzhe/member.html" class="li_top">成员列表</a></td>
<td class="li_aud_02_2"><a href="/qiniuzhe/discussions.html" class="li_top">圈内讨论</a></td>
<td class="li_aud_02_2"><a href="/qiniuzhe/activities.html" class="li_top">圈内活动</a></td>
<td class="li_aud_02_2"><a href="/qiniuzhe/notices.html" class="li_top">圈内公告</a></td>
<td class="li_aud_02_2"><a href="/qiniuzhe/articles.html" class="li_top">圈友推荐</a></td>
<td class="li_aud_02_2"><a href="/qiniuzhe/photos.html" class="li_top">圈内相册</a></td>
<td class="li_aud_02_2"><a href="/qiniuzhe/join.aspx" target="_blank" class="li_top">申请加入</a></td>
<td class="li_aud_02_2"><a href="/qiniuzhe/invite.aspx" class="li_top">邀请</a></td>
<td class="li_aud_02_2"><a href="/qiniuzhe/admin.aspx" class="li_top">管理</a></td>
</tr>
</table>
</div>
<script>
function copy_url(z)
{
clipboardData.setData('Text', z);
}
</script>
<div style="MARGIN-TOP:10px;MARGIN-LEFT:10px">
<!-- top_1:off -->
<!-- main:on -->
<!-- 自定义导航:on -->
<div style="BACKGROUND-IMAGE: url(http://group.hexun.com/p/bg/userBG.gif);WIDTH: 936px;HEIGHT: 187px">
<a href="/qiniuzhe/default.html" style="CURSOR: hand;" >
<div style="WIDTH: 886px;height:117px;PADDING-TOP: 70px; padding-left:50px;">
</div>
</a>
</div>
<table width="936" border="0" cellspacing="0" cellpadding="0" class="li_aud_37">
<tr>
<td class="li_aud_07">
分类导航: <a href="/qiniuzhe/default.html" class='li_1'>全部</a>
<span><a href="mode.aspx?type=1&backurl=http://group.hexun.com/qiniuzhe/newindex.aspx">升级为新版首页</a></span>
</td>
</tr>
</table>
</div>
<!-- 自定义导航:off -->
<!-- 邀请方式:on -->
<div class="li_creat_01">
<div class="li_creat_29" style="font-size:12px" id="MyDiv1">
<div class="li_creat_03">Admin Menu</div>
<div class="li_creat_31"><span class="li_creat_32">◆</span><a href="/qiniuzhe/default.html">圈子首页</a></div>
<div class="li_creat_31"><span class="li_creat_32">◆</span><a href="/qiniuzhe/invite.aspx">邀请朋友</a></div>
<div class="li_creat_31"><span class="li_creat_32">◆</span><a href="/qiniuzhe/admingeneral.aspx">常规设置</a></div>
<div class="li_creat_31"><span class="li_creat_32">◆</span><a href="/qiniuzhe/admintitle.aspx">头图设置</a></div>
<div class="li_creat_31"><span class="li_creat_32">◆</span><a href="/qiniuzhe/admintemplate.aspx">模板选择</a></div>
<div class="li_creat_31"><span class="li_creat_32">◆</span><a href="/qiniuzhe/Admindiscussion.aspx">讨论管理</a></div>
<div class="li_creat_31"><span class="li_creat_32">◆</span><a href="/qiniuzhe/adminnotice.aspx">公告管理</a></div>
<div class="li_creat_31"><span class="li_creat_32">◆</span><a href="/qiniuzhe/adminactivity.aspx">活动管理</a></div>
<div class="li_creat_31"><span class="li_creat_32">◆</span><a href="/qiniuzhe/admincategory.aspx">分类管理</a></div>
<div class="li_creat_31"><span class="li_creat_32">◆</span><a href="/qiniuzhe/adminphoto.aspx">推荐图片管理</a></div>
<div class="li_creat_31"><span class="li_creat_32">◆</span><a href="/qiniuzhe/adminarticle.aspx">推荐文章管理</a></div>
<div class="li_creat_31"><span class="li_creat_32">◆</span><a href="/qiniuzhe/adminrequest.aspx">成员申请处理</a></div>
<div class="li_creat_31"><span class="li_creat_32">◆</span><a href="/qiniuzhe/adminmember.aspx">成员管理</a></div>
<div class="li_creat_31"><span class="li_creat_32">◆</span><a href="/qiniuzhe/adminlink.aspx">友情链接管理</a></div>
</div> <div class="li_creat_30" style="FONT-SIZE:12px;BACKGROUND-COLOR:#f6f6f6">
<div class="li_creat_03" align="center">邀请好友</div>
<form id="frm" name="frm" method="post">
<div class="li_creat_26">
<div class="li_creat_27">请输入你欲邀请者的
<select id="userChose" name="userChose" class="li_creat_06" style="WIDTH:100px">
<option value="1" selected>用户名</option>
<option value="2">博客名(英文)</option>
</select>
<input name="User" id="User" type="text" class="li_creat_06" value="">
</div>
<div class="li_creat_27">请输入邀请说明:</div>
<textarea name="Explanation" id="Explanation" rows="5" style="WIDTH:500px">HI,你好!我在和讯创建了一个我自己的朋友圈,欢迎你参与进来共同讨论交流,热切等待你的加入!欢迎你通过下面的地址来访问!骑牛者: http://group.hexun.com/qiniuzhe/default.html</textarea>
</div>
<div class="li_creat_24">
<div style="WIDTH:500px" align="center">
<input type="submit" name="submitInvite" id="submitInvite" onclick="return submitinvite(User,Explanation,userChose);"
value="发送邀请" class="li_add_58" style="WIDTH:83px"> <input type="submit" name="cancelInvite" id="cancelInvite" onclick="return cancelinvite()"
value="取消" class="li_add_58" style="WIDTH:83px">
</div>
</div>
</div>
</div>
</FORM>
<!-- 邀请方式:off -->
<table width="956" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<div class="li_aud_06" style="width:100%"><div style="padding-top:7px; font-size:12px ">Powered by <a href="http://www.hexun.com" target="_blank">hexun.com</a> <a href="http://bar.hexun.com/t/1448840.html" target=_blank>客服中心</a></div>
</div> </td>
</tr>
</table>
</div>
<!-- main:off -->
</div>
<DIV></DIV>
<script language='javascript' src='http://wayup.hexun.com/inc/menu.aspx?gourl=http://group.hexun.com%2fqiniuzhe%2finvite.aspx'></script>
<script src="http://www.hexun.com/rest/track/track.js"></script>
<script language=javascript src="http://im.hexun.com/event.aspx?cururl=http%3a%2f%2fgroup.hexun.com%2finvite.aspx%3fgroupName%3dqiniuzhe"></script>
</body>
</HTML>
谢谢
谢谢===大哥,可能通过C#的WebBerower控件实现,我就用这个控件来写个灌水机的先打开第一个网页,然后截取内容,然后打开第二个网页,填内容过去,然后点发送。to xtvtkd(零零漆):
我知道要用这个,也查到了一些资料,可就是不能成功执行.
还望各位,不吝赐教.
有类似的代码,只要起到了引导,我完成的,我也赠分.
感谢
可以用主要是对网页中特定关键字的分析。
Posted on 2006-05-24 14:04 无悔 阅读(3767) 评论(28) 编辑 收藏 引用 网摘 所属分类: C#编程
通过程序自动的读取其它网站网页显示的信息,类似于爬虫程序。比方说我们有一个系统,要提取BaiDu网站上歌曲搜索排名。分析系统在根据得到的数据进行数据分析。为业务提供参考数据。
为了完成以上的需求,我们就需要模拟浏览器浏览网页,得到页面的数据在进行分析,最后把分析的结构,即整理好的数据写入数据库。那么我们的思路就是:
1、发送HttpRequest请求。
2、接收HttpResponse返回的结果。得到特定页面的html源文件。
3、取出包含数据的那一部分源码。
4、根据html源码生成HtmlDocument,循环取出数据。
5、写入数据库。程序如下: //根据Url地址得到网页的html源码
private string GetWebContent(string Url)
{
string strResult="";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
//声明一个HttpWebRequest请求
request.Timeout = 30000;
//设置连接超时时间
request.Headers.Set("Pragma", "no-cache");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream streamReceive = response.GetResponseStream();
Encoding encoding = Encoding.GetEncoding("GB2312");
StreamReader streamReader = new StreamReader(streamReceive, encoding);
strResult = streamReader.ReadToEnd();
}
catch
{
MessageBox.Show("出错");
}
return strResult;
}
为了使用HttpWebRequest和HttpWebResponse,需填名字空间引用
using System.Net;以下是程序具体实现过程:
private void button1_Click(object sender, EventArgs e)
{
//要抓取的URL地址
string Url = "http://list.mp3.baidu.com/topso/mp3topsong.html?id=1#top2"; //得到指定Url的源码
string strWebContent = GetWebContent(Url); richTextBox1.Text = strWebContent;
//取出和数据有关的那段源码
int iBodyStart = strWebContent.IndexOf("<body", 0);
int iStart = strWebContent.IndexOf("歌曲TOP500", iBodyStart);
int iTableStart = strWebContent.IndexOf("<table", iStart);
int iTableEnd = strWebContent.IndexOf("</table>", iTableStart);
string strWeb = strWebContent.Substring(iTableStart, iTableEnd - iTableStart + 8); //生成HtmlDocument
WebBrowser webb = new WebBrowser();
webb.Navigate("about:blank");
HtmlDocument htmldoc = webb.Document.OpenNew(true);
htmldoc.Write(strWeb);
HtmlElementCollection htmlTR = htmldoc.GetElementsByTagName("TR");
foreach (HtmlElement tr in htmlTR)
{
string strID = tr.GetElementsByTagName("TD")[0].InnerText;
string strName = SplitName(tr.GetElementsByTagName("TD")[1].InnerText, "MusicName");
string strSinger = SplitName(tr.GetElementsByTagName("TD")[1].InnerText, "Singer");
strID = strID.Replace(".", "");
//插入DataTable
AddLine(strID, strName, strSinger,"0"); string strID1 = tr.GetElementsByTagName("TD")[2].InnerText;
string strName1 = SplitName(tr.GetElementsByTagName("TD")[3].InnerText, "MusicName");
string strSinger1 = SplitName(tr.GetElementsByTagName("TD")[3].InnerText, "Singer");
//插入DataTable
strID1 = strID1.Replace(".", "");
AddLine(strID1, strName1, strSinger1,"0"); string strID2 = tr.GetElementsByTagName("TD")[4].InnerText;
string strName2 = SplitName(tr.GetElementsByTagName("TD")[5].InnerText, "MusicName");
string strSinger2 = SplitName(tr.GetElementsByTagName("TD")[5].InnerText, "Singer");
//插入DataTable
strID2 = strID2.Replace(".", "");
AddLine(strID2, strName2, strSinger2,"0"); }
//插入数据库
InsertData(dt);
dataGridView1.DataSource = dt.DefaultView;
}程序运行结果界面图:
以上程序在VS.Net2005(C#),Windows 2003(sp1)平台上测试通过。