美文网首页
Windform爬虫笔记

Windform爬虫笔记

作者: 树蜂 | 来源:发表于2018-12-28 13:53 被阅读0次

1、webkit的使用
2、HtmlAgilityPack的使用


1、webkit的使用

虽然可直接使用自带的webbrowser,但IE内核用着实在蛋疼,改用webkit内核。
1)下载WebKit的项目bin,网址如下:https://sourceforge.net/projects/webkitdotnet/files/WebKit%20.NET%200.x/0.5/WebKit.NET-0.5-bin-cairo.zip/download

2)下载解压后的目录结构如下:

image

3)将bin文件夹下的所有(没错!是所有文件复制),并粘贴到项目文件夹下,目标目录是:项目名/bin/Debug/

image

4)导入Webkitbrowser的dll到你的项目中。在VS2015的操作如下(其他的类推):
   在Solution Explorer下,选中你的项目名,然后右键,选择Add,然后选择Reference,如下图:

image

5)在弹出的对话框里。选择Browse -> Browse...,然后选择你的:项目名/bin/Debug下之前粘贴的WebKitBrowser.dll导入,结果如下图:

image

6)编码

WebKit.WebKitBrowser browser
private void Form1_Load(object sender, EventArgs e)
{
  browser = new WebKitBrowser();
  browser.Dock = DockStyle.Fill;
  this.Controls.Add(browser);
  browser.Navigate("http://www.baidu.com");
  browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(go);
}
// 网页加载完成后执行该函数
private void go(object sender, EventArgs e)
{
  ...
}
public void login(string name)
{
  WebKit.DOM.Document doc = browser.Document;
  // 往xxid的元素填入name
  WebKit.DOM.Element ele = doc.GetElementById("xxid");
  ele.SetAttribute("Value", name);
  // 调用函数名为funcName的脚本
  browser.Document.InvokeScriptMethod("funcName");
}

2、HtmlAgilityPack的使用

1)安装
离线下载地址

https://www.nuget.org/packages/HtmlAgilityPack/1.8.11

选择最新版本后点击 Download package 1.8.11 (1.2 MB)

image.png

可将下载后的后缀nupkg改为rar再解压,选择开发的.net版本下的HtmlAgilityPack.dll


image.png

再加入引用
2)使用
可通过string初始化

string html = WebRequestPost(url);
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);

通过加载文件初始化

string path= @"D:\ABC.html";
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(path, Encoding.UTF8);

其他XPath语法这里不做介绍
注意:

1、如果需要在获取的HtmlNode中进行操作,需要重新生成HtmlNode才能取到对应节点的信息,否则取到的一直都是第一个
2、生成的HtmlNode下只能有1个根节点,尝试使用allDivs[i].InnerHtmlallDivs[i].OuterHtml

HtmlNodeCollection allDivs = doc.DocumentNode.SelectNodes(xpathDiv);
for (int i = 0; i < allDivs.Count; i++)
{
  HtmlNode node = HtmlNode.CreateNode(allDivs[i].InnerHtml);
}

相关文章

网友评论

      本文标题:Windform爬虫笔记

      本文链接:https://www.haomeiwen.com/subject/tyxslqtx.html