我正在一个小型的自动化项目上工作,并且碰到了一堵砖墙。首先,我想说明我使用webbrowser这个项目的这个组件的唯一原因是网站正在被抓取有混淆的代码,并需要启用java的浏览器来显示代码,我有另一个应用程序使用webclient工作罚款等考点,但遗憾的是不能在这个目标努力编程配置WebBrowser控件时c#屏幕抓取项目 - 网页浏览器不改变url
我的问题出现使用
第一个问题我发现是,如果我手动设置在控制网址它将页面1加载并且该刮板可以用于该页面。
但是,我开始清除属性中的url,并在Form1_Load方法中手动设置它,但它返回about:blank作为url,尽管我已验证被拉入的自动参数是否正确,应该设置为无问题
以下是我正在使用的是什么:
注:
收集是指定义的XML序列化阵列
定义是指此目标的积极的定义,其用意就是为多个目标配置此
private void Form1_Load(object sender, EventArgs e)
{
PopulateScraperCollection();
webBrowser1.Url = new Uri(collection.ElementAt(b).AccessUrl);
NavigateToUrl(collection.ElementAt(b).AccessUrl);
}
public void PopulateScraperCollection()
{
string[] xmlFiles = Directory.GetFiles(@"E:\DealerConfigs\");
foreach (string xmlFile in xmlFiles)
{
collection.Add(ScraperDefinition.Deserialize(xmlFile));
}
}
public void NavigateToUrl(string url)
{
Console.WriteLine(collection.ElementAt(b).AccessUrl);
webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
webBrowser1.Navigate(webBrowser1.Url);
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser wb = sender as WebBrowser;
Process(collection.ElementAt(b), 0);
b++;
}
因此,这会导致使用DocumentCompleted导航到分页结果中的另一个问题。在第一页加载我使用DocumentCompleted事件触发链接提取。
当我尝试为下一页设置url时,它正在使用xpath正确选取并再次验证,使用F10在调试中跳过表示它没有更改并且DocumentCompleted事件没有被触发
我的代码更改URL等是:
string nextPageUrl = string.Format(definition.NextPageUrlFormat, WebUtility.HtmlDecode(relativeUrl));
webBrowser1.Url = new Uri(nextPageUrl);
webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
webBrowser1.Navigate(webBrowser1.Url);
一如既往是极大的赞赏任何帮助,这被证明是自动化一场噩梦,不仅是因为web浏览器是如此之比WebClient的慢得多,但其证明在飞行中改变疼痛
Regards
巴里
definition.NextPageUrlFormat的值是什么? – 2012-07-23 11:23:44
其目标网站网址+从网站上的“下一步”链接提取的分页元素。这正是我希望它在浏览器中对照网站检查后的结果 – BarryH1987 2012-07-23 11:38:02