公司要求采集赛事的整体信息,需要多个网站抓取数据整合。采用ie的内核随着时间的递推,内存消耗越来越多,无奈该用firefox的内核。
自决心采用Gecko后掉入深坑,调用基础dll都无法加载。通过查找国外网站信息才解决问题,整体流程整理出来,方便以后的同胞采用。
我的开发环境是Visual Studio 2017,windows7 企业版 64位。
1.一定要先安装vcredist_x86.exe,这个是干嘛的现在没时间去查,但是没有这个程序会加载不了dll。
2.下载geckofx-geckofx-33.0.zip
3.下载xulrunner-33.0.en-US.win32.sdk.zip解压xulrunner-33.0.en-US.win32.sdk,然后里面整个bin文件修改名称为xulrunner放入我们的bin文件同级目录下。
4.解决方案在手工把整个xulrunner以文件夹方式加载进入。
5.NuGet使用 ->菜单->工具->NuGet包管理器->管理解决方案的NuGet包程序,打开后搜索并安装Gecko,安装Gecko45
代码:
添加Panel控件System.Windows.Forms.Panel pnlMain;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Gecko;
namespace WebTest
{
public partial class Form1 : Form
{
private GeckoWebBrowser gfxBrowser;
public Form1()
{
InitializeComponent();
InitBrowser();
}
private void InitBrowser()
{
//System.IO.Directory.SetCurrentDirectory("D:\\selfprogram\\firefoxtest\\WebTest\\WebTest\\xulrunner");
Xpcom.Initialize("Firefox");
Gecko.Xpcom.Initialize("xulrunner");
gfxBrowser = new GeckoWebBrowser() { Dock = DockStyle.Fill };
gfxBrowser.Parent = pnlMain;
gfxBrowser.Navigate("www.baidu.com");
//gfxBrowser.AddMessageEventListener("call", ((string p) => { call(p); }));
//gfxBrowser.AddMessageEventListener("callMe", ((string p) => { callMe(p); }));
}
}
}