我已经让LibCURL从网上获取页面的来源,浏览并选择数据。
一切都很好,一页。我在离线测试期间遇到此问题,同时使用ifstream并将页面源保存到.html文件中。基本上发生了什么我想是网页渲染html +数据,我希望通过js调用的部分(不是100%肯定这个)所以它不直接在源中呈现。
我在离线测试中如何解决这个问题是在Safari上下载完整的网页作为离线模式文件,我相信它被称为.webarchive文件?这样,当我将其视为源代码时,html和数据在源代码中呈现。
我已经在互联网上寻找答案,但似乎无法找到答案,任何人都可以帮我在这里设置卷曲下载网页的“丰满”吗?
以下是我目前使用的选项。
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);
答案 0 :(得分:1)
您必须解析html并下载文档中的每个超文本引用。
当Safari下载网页时,它会将与主动缓存的该网页相关的所有内容转储到.webarchive
,其中包含所有图片,css和js文件的本地参考 。这意味着它只是以加载的形式为您提供存档中所有图像的页面,并且它与实际来源不同。
您可以对href=
和src=
(删除文档中的每个空格后)进行字符串搜索,然后以这种方式获取大部分空间的网址。
某些href
和src
标记会有相对链接,而不是绝对链接。因此,请务必检查http://
的开头,否则您必须使用url
变量中的路径并连接字符串。
唯一的问题是通过JavaScript或CSS(你在传递中提到)动态加载的内容,这将使其变得困难,因为你还必须挖掘这些文件以获取对该内容的引用。 / p> 祝你好运!