网页源代码抓取工具(为了简单方便,这里使用WebBrowser来玩一把,我们要注意 )

优采云 发布时间: 2021-12-14 11:11

  网页源代码抓取工具(为了简单方便,这里使用WebBrowser来玩一把,我们要注意

)

  为了简单方便,这里我们使用WebBrowser来玩,使用WebBrowser时要注意以下几点:

  第一:因为WebBrowser是System.Windows.Forms中的winform控件,所以需要设置STAThread标签。

  第二:Winform是事件驱动的,Console不响应事件,所有事件都在windows消息队列中等待执行,为了防止程序假死,

  我们需要调用DoEvents方法来转移控制权,让操作系统执行其他事件。

  第三:WebBrowser中的内容,我们需要使用DomDocument查看,而不是DocumentText。

  当时考虑过直接通过XLINQ转换成XML,读取XML数据,但是觉得这样做风险很大。如果页面代码不规范,很容易转换成XML,会例外

  所以考虑直接用一个整体来保存;

  然后通过 htppHandler URL 重定向。好的

  /要抓取数据的页面路径

string url = "https://www.sywebsoft.com/";

//将页面上的数据转换为HTML

string html = Method.GetHtmlData(url);

// txt_content.Text = html;

//找到需要的数据匹配正则 (?.+?)

string regex = @"(?.+?)";

Regex listRegex = new Regex(regex, RegexOptions.Multiline | RegexOptions.IgnoreCase);

//得到匹配的数据集合

MatchCollection mc = listRegex.Matches(html);

JCheng.Model.School Model = new JCheng.Model.School();

//将得到的字符串分割存进数组

string[] str = txt_content.Text.Substring(0, txt_content.Text.Length - 1).Replace("<br />", "").Split(,);

//数据每六个为一个model类 ,如下循环添加入库。

for (int i = 0; i < str.Length - 1; )

{

Model.sName = str[i];

Model.sAddress = str[i + 1];

Model.sPostCode = str[i + 2];

Model.sPhone = str[i + 3];

Model.sEmail = str[i + 4];

Model.sClass = str[i + 5];

new JCheng.BLL.School().Add(Model);

i += 6;

}

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线