【问题标题】:Programmatically Clicking on a Web Page's Button in Windows Forms Application在 Windows 窗体应用程序中以编程方式单击网页的按钮
【发布时间】:2014-12-08 08:51:00
【问题描述】:

我正在从事一个项目,即 Google Scholar 的论文分析。我所做的基本上是解析 HTML,将相关字段存储到数据库等。但是,我被困在一个点上,当我获取出版物的标题时,我意识到,我能够获得前 20 个元素。但是,相关帐户中有 60 篇论文:

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

所以,我认为作为一种解决方案,我需要以编程方式单击“显示更多”按钮,这样我就可以获得所有标题、出版地点等。

你怎么看?我怎样才能执行这种操作?

编辑:我检查了“显示更多”按钮,虽然没有任何内容可以显示为下一页,但它的 html 代码仍然保持不变。作为一种解决方案,我可以使用循环 n 次。但是,我正在寻找更强大的解决方案。 感谢您的宝贵时间!

【问题讨论】:

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


    【解决方案1】:

    如果它在 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";
    

    【讨论】:

      【解决方案2】:

      如果它专门用于此网站,则有一个简单的解决方法。将查询字符串更改为您想要的记录。

      http://scholar.google.com/citations?user=B7vSqZsAAAAJ&cstart=0&pagesize=2000

      【讨论】:

      • 嗯,这是一个不错的尝试 =)。但是,您可以查看一下,Google Scholar 中有 161 篇 Richard Feynman 的论文。用你的近似值,我可以看到 1 到 100...
      • 糟糕,看起来他们限制了页面大小。我使用 fiddler 进行了检查,单击 时只有一个带有更新的 cstart 查询字符串的 GET 请求。它可能需要一些调整,但应该可以正常工作。其他网站也一样,支持分页。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      相关资源
      最近更新 更多