我的应用程序将一个包含大量链接的大型html格式文件作为其数据的一部分。如果您在Google或Yahoo或其他搜索引擎上搜索任何内容,您会得到的结果:URL列表和说明或其他文本。
我一直试图推出一个可以解析URL和描述并将它们保存到文本文件中的函数,但事实证明这很难,至少对我而言。所以,如果我有:
<a href="http://www.w3schools.com">Visit W3Schools</a>
我会解析http://www.w3schools.com
和Visit W3Schools
并将其保存在文件中。
有任何方法可以实现这一目标吗?在普通的C?
任何帮助表示赞赏。
答案 0 :(得分:1)
你真的需要一个合适的html解析器,但对于快速和肮脏的东西,请尝试:
bool get_url(char **data, char **url, char **desc)
{
bool result = false;
char *ptr = strstr(*data, "<a");
if(NULL != ptr)
{
*data = ptr + 2;
ptr = strstr(*data, "href=\"");
if(NULL != ptr)
{
*data = ptr + 6;
*url = *data;
ptr = strchr(*data, '"');
if(NULL != ptr)
{
*ptr = '\0';
*data = ptr + 1;
ptr = strchr(*data, '>');
if(NULL != ptr)
{
*data = ptr + 1;
*desc = *data;
ptr = strstr(*data, "</a>");
if(NULL != ptr)
{
*ptr = '\0';
*data = ptr + 4;
result = true;
}
}
}
}
}
return result;
}
不是data
被更新为超出解析的数据(它是一个输入输出参数)并且传入的字符串被修改。我感到很懒/太忙,不能用内存分配的返回字符串做完整的解决方案。
此外,您可能应该在近距离范围括号(第一个除外)的级联上返回错误,这也是我将它们堆叠起来的部分原因。还有其他更整洁的解决方案可以适应更通用。
所以基本上你然后重复调用该函数,直到它返回false。