请教一个怪怪的问题(关于抓取数据)

haojuntu 2011-10-24 10:14:39
rt 搜狗浏览器,抓取数据的时候输入 搜索的关键字,请求不到数据.
有遇到的朋友帮忙提供一下思路,不胜感激! 下面的代码是搜索"管理"的信息,可是responseBody 的值是搜狗首页的值,
好像是这段代码判断网页是否加载完成没有起作用,谢谢各位帮忙看一下,分不够可以再加的..

while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();





private void button_ok_Click(object sender, EventArgs e)
{
Uri u = null;
try
{
//u = new Uri(string.Format(Sogou.Sogou_URL, MyUnity.UrlEncode(text_weburl.Text.Trim())));
u = new Uri("http://www.sogou.com");
}
catch
{
MessageBox.Show("对不起,页面路径不正确");
}

webBrowser1.Url = u;
i = 0;
List = new List<HtmeModel>();
webBrowser1.ScriptErrorsSuppressed = false;
while (webBrowser1.ReadyState == WebBrowserReadyState.Uninitialized)
Application.DoEvents();

while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();

HtmlElement query = webBrowser1.Document.All["query"];
if (query == null)
return;
query.SetAttribute("value", "管理");
HtmlElement sf = webBrowser1.Document.Forms["sf"];
sf.InvokeMember("submit");

while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();

webBrowser1.Width = webBrowser1.Document.Body.ScrollRectangle.Width;
webBrowser1.Height = webBrowser1.Document.Body.ScrollRectangle.Height;
Stream responseStream = webBrowser1.DocumentStream;
StreamReader readofstream = new StreamReader(responseStream, System.Text.Encoding.GetEncoding("GB2312"));
string responseBody = readofstream.ReadToEnd();
responseStream.Close();
responseStream.Dispose();


}
...全文
146 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
haojuntu 2011-10-31
  • 打赏
  • 举报
回复
自己整出来了

System.Windows.Forms.WebBrowser web = new System.Windows.Forms.WebBrowser();
web.ScriptErrorsSuppressed = false;
web.Url = new Uri("http://www.sogou.com");
while (web.ReadyState != System.Windows.Forms.WebBrowserReadyState.Interactive)
{
if (web.ReadyState == System.Windows.Forms.WebBrowserReadyState.Complete)
{
break;
}
System.Windows.Forms.Application.DoEvents();
}
System.Windows.Forms.HtmlElement query = web.Document.All["query"];
if (query == null)
return;
// query.InnerText = keyword;
query.SetAttribute("value", keyword);
System.Windows.Forms.HtmlElement sf = web.Document.Forms["sf"];
sf.InvokeMember("submit");

System.Threading.Thread.Sleep(500);
while (web.ReadyState != System.Windows.Forms.WebBrowserReadyState.Interactive)
{
System.Windows.Forms.Application.DoEvents();
if (web.ReadyState == System.Windows.Forms.WebBrowserReadyState.Complete)
{
System.Windows.Forms.Application.DoEvents();
break;
}
}
Stream responseStream = web.DocumentStream;
StreamReader readofstream = new StreamReader(responseStream, System.Text.Encoding.GetEncoding("GB2312"));
string responseBody = readofstream.ReadToEnd();
responseStream.Close();
responseStream.Dispose();
haojuntu 2011-10-24
  • 打赏
  • 举报
回复
输入关键字 ,然后搜索
应该请求到的结果是
实际接收到的结果为

想要的结果是管理关键字的,html代码.
大家帮忙看一下啊
haojuntu 2011-10-24
  • 打赏
  • 举报
回复
是先输入搜索的关键字,然后用post提交,请求数据,现在问题是请求不到数据,稍等我把图片帖出来.
萧炎 2011-10-24
  • 打赏
  • 举报
回复
获取网页源码 然后搜索吗?
yangbo2414 2011-10-24
  • 打赏
  • 举报
回复
文档加载事件 写出来试试···


webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.Document.All["username"].SetAttribute("Value", "xxxxx");
}

110,539

社区成员

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

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

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