以编程方式单击Windows窗体应用程序中的网页按钮

时间:2014-12-08 08:51:01

标签: c# winforms visual-studio-2013 google-scholar

我正在开发一个项目,即Google学术搜索分析论文。我所做的基本上是解析HTML,将相关字段存储到数据库等等。但是,我被困在某一点上,而我正在考虑出版物的标题,我意识到,我能够获得前20个元素。但是,相关账户中有60篇论文:

http://scholar.google.com/citations?user=B7vSqZsAAAAJ

所以,我认为作为一个解决方案,我需要点击“显示更多”'按钮编程,所以我可以拥有所有标题,出版地点等。

你怎么看?我该如何进行这种行动?

编辑:我查看了“显示更多”字样。按钮,虽然没有什么可以显示为下一页,其HTML代码仍然保持不变。作为一种解决方案,我可以使用循环n次。但是,我正在寻找更强大的解决方案。 谢谢你的时间!

2 个答案:

答案 0 :(得分:0)

如果它的网站具体,有一个简单的解决方法。将查询字符串更改为您想要的记录。

http://scholar.google.com/citations?user=B7vSqZsAAAAJ&安培; CSTART = 0&安培;页大小= 2000

答案 1 :(得分:0)

如果在Windows窗体应用程序上单击WebBrowser控件中的按钮,则可以执行“是”。 有一些方法可以通过使用XPath来更好地控制识别。

(您可能需要使用Javascript将XPath用于对象交互 - 因为您没有要求,我会假设您不需要它)

webBrowser.Navigate("http://www.google.com");

//   Or

HtmlElement textElement = webBrowser.Document.All.GetElementsByName("q")[0];
textElement.SetAttribute("value", "your text to search");
HtmlElement btnElement = webBrowser.Document.All.GetElementsByName("btnG")[0];
btnElement.InvokeMember("click");

甚至可以使用

键入文本框
webBrowser1.Document.GetElementById("gs_tti0").InnerText = "hello world";