如何使用C ++单击网站上的按钮

时间:2016-10-01 12:59:41

标签: c++ web-crawler

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

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

1 个答案:

答案 0 :(得分:0)

这并不容易,但如果你想这样做,你需要多次请求。

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

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

替代方法:您可以使用 Selenium 等框架,而不是编写直接下载网站内容的抓取工具。 Selenium允许自动化浏览器并且用于测试,但也可以使用它来抓取网站。如果您知道要单击的元素的ID或XPath,则可以在浏览器中更轻松地执行点击等操作。这可能比经典"更容易做到。履带。

但是,您应该知道,许多网站都有某种形式的保护措施,可以防止它们受到请求的影响。也就是说,如果您打算在很短的时间内对同一台服务器执行大量请求,则可能会阻止服务器。因此,请尝试将请求限制为绝对最小值。