Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何获取页面';s";完整来源;?_C++_Curl_Libcurl - Fatal编程技术网

C++ 如何获取页面';s";完整来源;?

C++ 如何获取页面';s";完整来源;?,c++,curl,libcurl,C++,Curl,Libcurl,我让LibCURL从web上获取页面的源代码,查看并提取数据 每样东西都很好,一页就可以了。在使用ifstream和保存到.html文件的页面源代码进行脱机测试时,我遇到了这个问题。基本上,我认为网页呈现的是html+数据,这些部分是我通过js调用想要的(不是100%确定),因此它不会直接呈现在源代码中 在离线测试中,我是如何将整个网页作为离线模式文件下载到Safari上的,我相信它被称为.webarchive文件?这样,当我将其视为源代码时,html和数据在源代码中呈现 我在互联网上搜索答案,

我让LibCURL从web上获取页面的源代码,查看并提取数据

每样东西都很好,一页就可以了。在使用ifstream和保存到.html文件的页面源代码进行脱机测试时,我遇到了这个问题。基本上,我认为网页呈现的是html+数据,这些部分是我通过js调用想要的(不是100%确定),因此它不会直接呈现在源代码中

在离线测试中,我是如何将整个网页作为离线模式文件下载到Safari上的,我相信它被称为.webarchive文件?这样,当我将其视为源代码时,html和数据在源代码中呈现

我在互联网上搜索答案,但似乎找不到答案,有人能帮我在curl的设置中下载“完整”的网页吗

以下是我目前使用的选项

curl_easy_setopt(this->curl, CURLOPT_URL, url);
curl_easy_setopt(this->curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(this->curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0");
curl_easy_setopt(this->curl, CURLOPT_COOKIEFILE, "cookies.txt");
curl_easy_setopt(this->curl, CURLOPT_COOKIEJAR, "cookies.txt");
curl_easy_setopt(this->curl, CURLOPT_POSTFIELDS, postData); // if needed
curl_easy_setopt(this->curl, CURLOPT_WRITEFUNCTION, this->WriteCallback);
curl_easy_setopt(this->curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(this->curl);

您必须解析html并下载文档中的每个超文本引用

Safari下载网页时,会将与该网页相关的所有内容转储到
.webarchive
中,其中包含所有图像、css和js文件的本地引用。这意味着它只是以加载的形式向您提供包含存档中所有图像的页面,并且它与实际源不同

您可以对
href=
src=
进行字符串搜索(删除文档中的每个空格后),并通过这种方式获取其中大多数的URL

一些
href
src
标记将具有相对链接,而不是绝对链接。因此,请务必检查
http://
的开头,否则必须使用
url
变量中的路径并连接字符串

唯一的问题是通过JavaScript或CSS动态加载的内容(您在前面提到过),这将使加载变得困难,因为您还必须挖掘这些文件以获取对该内容的引用


祝你好运

不仅解析JS,而且您可能还必须实际执行它,以查看它如何操作web页面的内容,特别是如果它使用DOM接口来执行此操作。因此,仅仅使用libcurl获取“完整”源代码是不够的,因为它只会接收HTML的静态内容,而不是动态内容。当使用firefox的inspect元素时,我可以很好地获取源代码。iv追踪到它,它似乎是JS,有两个div标签,第一个在加载时显示,第二个在加载时显示。此外,js会在URL中发送的GET变量上自动调用,例如page.php?a=1&b=2加载后只需几秒钟即可显示?啊,我没想到阿贾克斯。当您使用
libcurl
时,您实际上是在使用httpget。可以通过解析JS来跟踪正在查询的内容的url。即使这样,您也必须弄清楚AJAX是通过jQuery还是标准JavaScript,甚至是其他工具包完成的。然后将单独的查询插入最初返回的HTML中。由于内容仅可访问会话,如何执行该操作?使用firefox的inspect元素时,我可以很好地获取源代码。iv追踪到它,它似乎是JS,有两个div标签,第一个在加载时显示,第二个在加载时显示。此外,js会在URL中发送的GET变量上自动调用,例如page.php?a=1&b=2加载后只需几秒钟即可显示?