【问题标题】:Using curl in C++ to get page that changes after sometime在 C++ 中使用 curl 获取一段时间后更改的页面
【发布时间】:2020-08-24 06:39:58
【问题描述】:

我试图用 C++ 制作一个网络爬虫(我知道我可以使用其他语言,但我只是想学习)。有一个网页我正在尝试获取 html 代码,但页面在一两秒后更改为我想要的链接。如何让程序等到某个时间返回 html?

编辑:我想进行一次 curl 调用,然后等待一段时间,然后在一段时间后对同一网页进行另一次 curl 调用。 (不要再次打开链接,因为它会给出相同的页面)

【问题讨论】:

  • 你能再描述一下这个问题吗?你想每隔 X 秒打一个 curl 电话吗?还是您要进行 curl 调用(从而获得结果),然后等待 X 秒再进行另一个调用?
  • @aliak 哦,好吧,我的意思是我想在 X 秒后进行 curl 调用。不反复。谢谢
  • 你可以用std::this_thread::sleep_for(std::chrono::seconds(2));睡2秒
  • @TedLyngmo 然后我再做一次 curl_easy_perform() 吗?
  • @друг 也许吧。我不确定“不要再次打开链接,因为它会给出相同的页面”是什么意思。我只是在提示如何在事件之间延迟 2 秒来执行 XY

标签: c++ curl web-crawler libcurl


【解决方案1】:

您有三个选择:

  1. 调查网站并找出 javascript 代码如何更改页面,然后在 C++ 中复制该代码(通过硬编码 URL 或解析页面的某些部分),
  2. 嵌入一个能够理解 JavaScript 的完整浏览器引擎,并在其更改后单击链接,或者
  3. 放弃 C++ 并使用专用的抓取工具,例如 CasperJS 或 Scrapy 或 wring 或 ...

我会检查页面,看看您是否可以使选项 1 起作用,但选项 3 是迄今为止最简单的方法。

【讨论】:

  • 问题是我已经在专用的抓取工具中完成了。我只是想尝试用 C++ 来做
  • 那么您将不得不调查该页面。卷曲本身是不够的。
  • 我找到了运行的 javascript。它使用带有链接的 JSON 文件调用 api。现在必须解析 JSON。感谢您的建议,它确实有帮助
猜你喜欢
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
  • 2019-07-13
  • 1970-01-01
  • 2021-08-30
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
相关资源
最近更新 更多