谁能帮小弟提供一个抓取网页数据的程序,最好是cSharp的!

gkmzk 2011-09-19 03:27:03
谁能帮小弟提供一个现在常用的抓取网页数据的程序,最好是cSharp的!
...全文
417 32 打赏 收藏 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
gkmzk 2011-09-27
  • 打赏
  • 举报
回复
那么如果说一个元素在页面上显示,而在其源文件找不出来,都有可能会是什么情况!
bill_poon 2011-09-26
  • 打赏
  • 举报
回复
{......
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(GetHtml(url));//获取网页源代码
string Url = string.Format("http://..../{0}", GetProperty(htmlNode, "//frame[@name='query']", "src"));//获取src中的"query.php"
........
}


private string GetProperty(HtmlNode htmlNode, string xpath, string property)
{
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(htmlNode.OuterHtml);
HtmlNode target = htmlDoc.DocumentNode.SelectSingleNode(xpath);
if (target != null && target.Attributes[property] != null)
{
return target.Attributes[property].Value;
}
return null;
}
gkmzk 2011-09-26
  • 打赏
  • 举报
回复
我获到的html代码是这样的:
<html>
<head></head>
<body>
<frameset rows="300,*" frameboder="no" >
<frame name="query" src="query.php">
<frame name="result" >
<noframes>
<body>
</body>
</noframes>
</frame>
</frameset>
</body>
</html>
是个框架页,"query.php"是个查询页,查询结果应该就在以"result"为名的框架页中,但是我打不到它的"src"属性,问题就在这儿!
sxldfang 2011-09-25
  • 打赏
  • 举报
回复
18楼的代码你试了吗?不管是否catch到错误,都可继续利用response获取网页数据。

若不行,把你的网页地址放出来看看!
gkmzk 2011-09-24
  • 打赏
  • 举报
回复
其它的网站一定能行吗?,不过我想先获到到这个网站的数据!
萧炎 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 gkmzk 的回复:]
是可以获到到页面的html,只是说部分页面的数据在所获取到的html中找不到, 是这个意思!
[/Quote]
额-- 网站问题吧 你用其他网站试试
gkmzk 2011-09-24
  • 打赏
  • 举报
回复
是可以获到到页面的html,只是说部分页面的数据在所获取到的html中找不到, 是这个意思!
萧炎 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 gkmzk 的回复:]
引用 23 楼 lxxc11 的回复:
再给段我以前写的可以的获取的。你试试看可不可以。

C# code
static string GetHTML(string url)//获取网页源代码。
{
string Html = null;
HttpWebRequest request = (HttpWebRequest)WebRequest.C……

这个代码我也用过了,不能获取……
[/Quote]
LZ我很纳闷 我那个代码 N个人用了都行 为什么你不行啊?

你确定你其他地方没搞错?
gkmzk 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 lxxc11 的回复:]
再给段我以前写的可以的获取的。你试试看可不可以。

C# code
static string GetHTML(string url)//获取网页源代码。
{
string Html = null;
HttpWebRequest request = (HttpWebRequest)WebRequest.C……
[/Quote]
这个代码我也用过了,不能获取到页面显示的数据!
兰溪小城 2011-09-24
  • 打赏
  • 举报
回复
再给段我以前写的可以的获取的。你试试看可不可以。
         static string GetHTML(string url)//获取网页源代码。
{
string Html = null;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "Get";
request.ContentType = "application/x-www-form-urlencoded ";
WebResponse response = request.GetResponse();
Stream s = response.GetResponseStream();
StreamReader sr = new StreamReader(s, System.Text.Encoding.GetEncoding("gb2312"));
Html = sr.ReadToEnd();
return Html;
s.Close();
sr.Close();
}
萧炎 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 gkmzk 的回复:]
引用 19 楼 zyloveyrf 的回复:
C# code

//获取网站源码
private string GetWebContent(string sUrl)
{
string strResult = "";
try
{
HttpWebRequest request = (HttpWebRequest……

我用的就是这个代码,根本无法获到页面元素的html
[/Quote]
不是吧 我刚测试了 没问题啊 你的是窗体程序撒?
我在窗体程序中 完全没问题啊
兰溪小城 2011-09-24
  • 打赏
  • 举报
回复
因为有些网站有防止别人抓取信息的功能,所以有些就不可以了。比较普通的用上面那些代码就可以了。

你也可以看一下源文件,页面上显示的内容在源文件找不到的有些。那些HTTPREQUEST获取的只是源文件的内容
gkmzk 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 zyloveyrf 的回复:]
C# code

//获取网站源码
private string GetWebContent(string sUrl)
{
string strResult = "";
try
{
HttpWebRequest request = (HttpWebRequest……
[/Quote]
我用的就是这个代码,根本无法获到页面元素的html
萧炎 2011-09-24
  • 打赏
  • 举报
回复

//获取网站源码
private string GetWebContent(string sUrl)
{
string strResult = "";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sUrl);
//声明一个HttpWebRequest请求
request.Timeout = 3000000;
//设置连接超时时间
request.Headers.Set("Pragma", "no-cache");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.ToString() != "")
{
Stream streamReceive = response.GetResponseStream();
Encoding encoding = Encoding.GetEncoding("UTF-8");
StreamReader streamReader = new StreamReader(streamReceive, encoding);
strResult = streamReader.ReadToEnd();
}
}
catch (Exception exp)
{
//MessageBox.Show("出错");
MessageBox.Show(exp.Message);
}
return strResult;
}
//测试:string str=GetWebContent("http://www.baidu.com");
sxldfang 2011-09-24
  • 打赏
  • 举报
回复
这是从我的程序中复制的部分内容,但很关键,希望能帮得到你!

HttpWebResponse response =null;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch(WebException ex)
{
response = (HttpWebResponse)ex.Response;
}
gkmzk 2011-09-24
  • 打赏
  • 举报
回复
大哥们,我现在的问题是根本就获到不到html代码,所以根本不能通过html代码来获到其内部数据的,望大家谅解!
bill_poon 2011-09-22
  • 打赏
  • 举报
回复
public void main()
{
string url = "";
string main = ResponJson(url);
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(main);
string strTitle= GetText(htmlDoc.DocumentNode, "//div[@id='']");//用xpath提取题目
.......................

}

private string GetText(HtmlNode htmlNode, string xpath)
{
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(htmlNode.OuterHtml);
HtmlNode target = htmlDoc.DocumentNode.SelectSingleNode(xpath);
if (target != null)
{
return target.InnerText.Trim();
}
return null;
}

public string ResponJson(string strUrl)
{
HttpWebRequest MyRequest = WebRequest.Create(strUrl) as HttpWebRequest;

MyRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";

HttpWebResponse MyResponse = null;

MyResponse = MyRequest.GetResponse() as HttpWebResponse;


Stream myStream = MyResponse.GetResponseStream();

StreamReader myStreamReader = new StreamReader(myStream, System.Text.Encoding.GetEncoding("UTF-8"));

string readConnect = myStreamReader.ReadToEnd();

myStreamReader.Close();

MyResponse.Close();

return readConnect;
}




给你参考下
bill_poon 2011-09-22
  • 打赏
  • 举报
回复
自己写一个吧!利用正则或xpath把你想要的内容从网页上抓下来
yanran_hill 2011-09-22
  • 打赏
  • 举报
回复
string sServerUrl = @"...";
string ResponseStr;
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(sServerUrl);
try
{
using (HttpWebResponse wr = (HttpWebResponse)req.GetResponse())
{
...
}
ResponseStr=...;
}

HTMLDocument document = new HTMLDocumentClass();
IHTMLDocument2 doc = (IHTMLDocument2)document;
try
{
string strResponse = ResponseStr;
doc.write(oPageText);
if (null != document)
{
}
}
catch
{
}

mshtml.HTMLDocumentClass logindocument = (mshtml.HTMLDocumentClass)document;
mshtml.HTMLFormElement loginform = (mshtml.HTMLFormElement)
logindocument.getElementById("loginform");
mshtml.HTMLInputElement username = (mshtml.HTMLInputElement) logindocument.getElementById("username");
string strusername = username.value;
gkmzk 2011-09-22
  • 打赏
  • 举报
回复
MSHTML主要是用来干什么的,怎么样获取不显示在 html中的数据!
加载更多回复(12)
内容概要:本文围绕基于电感电容电流环PI与前馈补偿矩阵构造的跟网型储能变流器,开展dq坐标系下的阻抗理论建模与Simulink仿真对比研究。通过建立储能变流器在dq域的数学模型,设计包含电感电流内环、电容电流中间环和电压外环的多环控制结构,并引入前馈补偿矩阵以提升系统的动态响应能力和稳定性。在此基础上,采用小信号分析法推导系统的输出阻抗模型,构建完整的dq域阻抗理论框架,并利用Simulink平台搭建高保真仿真模型进行频域扫频验证,实现理论建模与仿真结果的精确对比,深入分析控制参数对系统阻抗特性的影响规律,揭示其在抑制并网系统振荡、提升稳定性方面的关键作用,为新能源并网系统的稳定性分析与优化设计提供坚实的理论支撑和技术路径。; 适合人群:具备电力电子、自动控制理论基础,从事新能源发电、储能系统、微电网或电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握跟网型储能变流器在dq域的阻抗建模方法;②理解多环控制与前馈补偿对系统阻抗特性的影响机制;③实现理论阻抗模型与Simulink仿真扫频结果的对比验证,支撑并网稳定性分析。; 阅读建议:学习者应结合控制理论与电力电子变换器知识,重点关注数学推导与仿真建模的一致性,建议动手复现Simulink仿真模型并进行参数敏感性分析,以深化对阻抗重塑机理的理解。
内容概要:本文介绍了基于Matlab实现的基本雷达与干扰机仿真系统,旨在通过代码实践帮助读者深入理解雷达系统的工作原理及其在复杂电磁环境中与干扰机的相互作用机制。内容涵盖雷达信号的发射、传播、目标回波接收、微多普勒效应建模、干扰信号的生成与影响分析等关键环节,结合具体的Matlab代码实现了完整的仿真流程,并提供了详尽的结果可视化与性能评估,重点展示了目标探测、时频特征提取、干扰抑制策略等关键技术的实现方法,有助于掌握雷达系统动态特性与抗干扰能力的分析手段。; 适合人群:具备一定Matlab编程基础,对雷达系统、信号处理、电子对抗或通信工程等领域感兴趣的高校学生、科研人员及工程技术人员。; 使用场景及目标:①学习雷达系统的基本构成与工作流程;②掌握雷达回波信号与典型干扰信号(如噪声干扰、欺骗干扰)的数学建模方法;③通过Matlab仿真深入理解微多普勒特征、时频分析技术(如STFT、小波变换)及干扰抑制算法;④为开展雷达目标识别、抗干扰算法设计或电子战系统仿真等前沿研究奠定实践基础。; 阅读建议:建议读者结合提供的Matlab代码逐段运行并调试,重点关注雷达信号模型、目标运动建模、干扰生成模块及信号处理流程,配合文中仿真结果进行对比分析;同时可延伸学习现代信号处理技术如压缩感知、机器学习在雷达中的应用,以提升综合科研与工程实践能力。
基于星形耦合自均流机制的双三相LLC变换器变频调压与多模式切换控制策略研究(Simulink仿真实现)内容概要:本文研究了一种基于星形耦合自均流机制的双三相LLC变换器,重点探讨其变频调压与多模式切换控制策略,并通过Simulink进行仿真实现。该研究旨在解决双三相LLC变换器在不同工作模式下电流不均衡、电压调节不稳定等问题,通过引入星形耦合结构实现自动均流,提升系统效率与可靠性。文中详细分析了变频控制对谐振变换器输出电压的调节机理,设计了多模式平滑切换策略以适应负载变化,确保系统在轻载、重载及瞬态工况下的高效稳定运行。同时,建立了完整的Simulink仿真模型,验证了所提控制策略在动态响应、稳态精度和抗干扰能力方面的优越性。; 适合人群:从事电力电子与电力传动、新能源变换技术及相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于高效率、高可靠性的直流电源系统设计,如电动汽车充电、数据中心供电等;②为多相LLC谐振变换器的均流控制与模式切换提供理论支持和技术方案;③适用于需要高性能电源变换器的工业应用场景,推动先进控制策略在实际系统中的落地应用。; 阅读建议:读者应具备一定的电力电子电路与控制系统基础知识,建议结合Simulink仿真模型同步学习,深入理解控制逻辑的设计细节与参数整定方法,并可通过修改仿真参数验证不同工况下的系统性能,以增强实践理解和创新能力。

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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