【问题标题】:How to click a button on website with C++如何使用 C++ 点击网站上的按钮
【发布时间】:2016-10-01 12:59:40
【问题描述】:

我正在用 C++ 设计一个网络爬虫,但是有一个网页问我“你至少 18 岁吗?”当我第一次使用URLDownloadToFileW获取网页时,当然我必须点击YES。

在javascript中,我可以使用document.getElementsByTagName('button')[0].click();模拟按钮点击,那么有没有其他方法可以用C++解决这个问题?

【问题讨论】:

  • 这很可能不会奏效,至少不容易。如果所需的内容尚未加载,那么您应该向网站发送另一个请求。无法猜测那是什么。

标签: c++ web-crawler


【解决方案1】:

这并不容易做到,但如果你想做到,你需要几个请求。

点击(即 JavaScript 中的 document.getElementsByTagName('button')[0].click();)所做的是触发关联的点击事件。您的第一步应该是找到事件处理程序代码并查看它。例如,该事件可能会向网站发送另一个 (AJAX) 请求。如果是这种情况,您也必须在爬虫中使用 C++ 执行请求。许多网站还使用 cookie 来存储用户对此类问题的回答(或者至少是用户选择“我至少 18 岁”这一事实)。因此,您的爬虫也必须接受此类 cookie,并在请求之间存储它们。

我知道这个答案相当笼统,但如果不知道您正在抓取的确切网站,很难给出更具体的答案。

替代方法:您可以使用 Selenium 等框架,而不是编写直接下载网站内容的爬虫。 Selenium 允许自动化浏览器,旨在用于测试,但也可以使用它来爬取网站。优点是您还可以在浏览器中更轻松地执行诸如单击之类的操作,前提是您知道要单击的元素的 ID 或 XPath。这可能比“经典”爬虫更容易做到。

但是,您应该知道,许多网站都有某种保护措施,以防止它们被适当的请求淹没。也就是说,如果您打算在短时间内向同一台服务器发出大量请求,您可能会被服务器阻止。所以尽量将请求限制在绝对最小值。

【讨论】:

    猜你喜欢
    • 2014-10-17
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 2016-03-30
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多