gpt4 book ai didi

从 HTML 中抓取 C++ 屏幕

转载 作者:行者123 更新时间:2023-11-28 05:08:32 25 4
gpt4 key购买 nike

我正在尝试使用 substr 和查找从下面的 html 中提取数据“Lady Gaga Fame Monster”,但我无法检索数据。

<div class="album-name"><strong>Album</strong> > Lady Gaga Fame Monster</div>

我试图先提取整个字符串,但我只能在命令 cout << line_found 下提取到 Album ,因为有间距阻止它进一步进行。

我试试 cout << extract_line .我在提取的 html 代码中看不到空格。

我尝试了基于此 http://www.cplusplus.com/reference/string/string/substr/ 的教程,即使有空格,它也能工作。我正在密切关注,但一旦遇到空格,它就会停止提取。请帮助真的很感激。谢谢。找出 2 天没有任何解决方案。

这是源代码:

#include "parser.h"
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <string>
#include <cstring>

using namespace std;

int main() {

string line_found, extract_line, result, finalResult="";
int firstPosition, secondPosition, input, location;

ifstream sourceFile ("cd1.htm"); // extracts from sourcefile

while(!sourceFile.eof())
{
sourceFile >> extract_line;
location = extract_line.find("album-name");
// cout << extract_line;

if (location >=0)
{
line_found = extract_line.substr(location);
cout << line_found << endl;
firstPosition= line_found.find_first_of(">");

result = line_found.substr(firstPosition);

}
}
return 0;
}

最佳答案

>>运算符不获取行。它获取以空格分隔的标记。使用 std::getline (参见 here)。

更好的是,不要使用字符串搜索工具来解析 HTML。这是一场等待发生的灾难。事实上,它正在发生在你身上。请注意,> 有不止一个实例。在你的行中,所以你可能会找到错误的一个并让自己陷入完全困惑,试图跳过所有无关紧要的(你可以尝试寻找 " > " ,但如果你遇到这个:...class="album-name" > <strong>... 怎么办? ,这是完全有效的 HTML。

如果 HTML 是正确的 XHTML,请改用 XML 解析器。 Expat ,例如,体积小、速度快且(相对)易于使用。您可以找到一个不错的简单介绍 here .

如果 HTML 杂乱无章,您将难以使用 C++。有一个相关的 SO 问题 here .或者,使用具有良好 HTML 库的语言,例如 Python ( Beautiful Soup ),您可以从 C++ 调用它。

关于从 HTML 中抓取 C++ 屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3482126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com