html循环访问网站,C#的webbrouse循环访问网址

这篇博客介绍了如何利用C#的WebBrowser控件进行多页循环爬取搜索引擎结果。代码示例展示了如何在页面加载完成后导航到下一个页面,并在加载过程中设置中断标志,实现爬取过程的控制。同时,文中还涉及到页面加载状态的判断和事件处理,确保每个页面加载完毕后再进行下一步操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Threading;

namespace Quick

{

public partial class FormMain : Form

{

HtmlElementCollection link;

Boolean flag;

Boolean loading;

public FormMain()

{

InitializeComponent();

}

private void buttonStart_Click(object sender, EventArgs e)

{

flag = false;

loading=true;

//循环执行任务

for (int page = 1; page <= 4;page++)

{

while(loading)

{

loading = false;

this.webBrowser.Navigate("http://www.haosou.com/s?ie=utf-8&shb=1&src=360sou_newhome&q=12&pn="+page);

this.webBrowser.ScriptErrorsSuppressed = true;

if (flag)

break;

}

}

}

private void FormMain_Load(object sender, EventArgs e)

{

//System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;

//ThreadStart是一个无参无返回值的委托。

//ThreadStart ts = new ThreadStart(task);

//初始化Thread的新实例,并通过构造方法将委托ts做为参数赋初始值。

//Thread td = new Thread(ts); //需要引入System.Threading命名空间

//运行委托

//td.Start();

//循环执行任务

//while (true)

//{

// flag = false;

// this.webBrowser.Navigate("http://www.haosou.com/s?ie=utf-8&shb=1&src=360sou_newhome&q=台湖");

// this.webBrowser.ScriptErrorsSuppressed = true;

//等待10S,等待页面加载完成

//Thread.Sleep(10000);

//停止20S,进行下一个任务

// Thread.Sleep(20000);

// }

}

public void task()

{

//循环执行任务

while (true)

{

flag = false;

this.webBrowser.Navigate("http://www.haosou.com/s?ie=utf-8&shb=1&src=360sou_newhome&q=12");

this.webBrowser.ScriptErrorsSuppressed = true;

//等待10S,等待页面加载完成

Thread.Sleep(10000);

//停止20S,进行下一个任务

Thread.Sleep(20000);

}

}

private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

{/*

foreach (HtmlElement archor in this.webBrowser.Document.Links)

{

archor.SetAttribute("target", "_self");

}

foreach (HtmlElement form in this.webBrowser.Document.Forms)

{

form.SetAttribute("target", "_self");

}

link = this.webBrowser.Document.GetElementsByTagName("a");

for (int ii = 0; ii < link.Count; ii++)

{

if (link[ii].GetAttribute("href").Contains("www.xingzuowu.com"))

{

link[ii].InnerHtml = "" + link[ii].InnerHtml + "";

link[ii].InvokeMember("click");

//已经找到,退出循环

break;

}

}

loading = true;*/

}

bool load = true; //该变量表示网页是否正在加载.

string html = string.Empty;

private void buttonLoop_Click(object sender, EventArgs e)

{

String[] urls = { "http://www.haosou.com/s?q=12&pn=1", "http://www.haosou.com/s?q=12&pn=2", "http://www.haosou.com/s?q=12&pn=3" };

webBrowser.Navigated += new WebBrowserNavigatedEventHandler(webBrowser_Navigated);

foreach (string url in urls)

{

load = true; //表示正在加载

webBrowser.Navigate(url);

this.webBrowser.ScriptErrorsSuppressed = true;

while (load)

{

Application.DoEvents();//等待本次加载完毕才执行下次循环.

}

}

}

void webBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e)

{

html = webBrowser.DocumentText; //获取到的html.

MessageBox.Show(html);

load = false;//在加载完成后,将该变量置为false,下一次循环随即开始执行.

}

}

}

效果是:在完成第一个网页后,再对第二个网页进行访问,测试成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值