我有一个HTML文件,我从网站上获得了非常糟糕的格式化代码,我想提取一些非常小的信息。
我只对以这样开头的行感兴趣:
</form></td><td><a href="http://www.mysite.com/users/user897" class="username"> <b>user897</b></a></td></tr><tr><td>HouseA</td><td>2</td><td class="entriesTableRow-gamename">HouseA Type12 <span class="entriesTableRow-moredetails"></span></td><td>1 of 2</td><td>user123</td><td>10</td><td>
我想提取3个字段:
A:HouseA
B:HouseA Type12
C:user123
D:10
我知道我见过人们推荐HTML Agility Pack和lib2xml,但我真的不认为我需要这一切。我的应用程序是用C / C ++。
我已经在使用getline开始读行了,我只是不确定什么是最好的方法。谢谢!
std::ifstream data("Home.html");
std::string line;
while(std::getline(data,line))
{
linenum++;
std::stringstream lineStream(line);
std::string user;
if (strncmp(line.c_str(), "</form></td><td>",strlen("</form></td><td>")) == 0)
{
printf("found a wanted line in line:%d\n", linenum);
}
}
答案 0 :(得分:2)
在一般情况下,XML / HTML解析器可能是最好的方法,因为它对于不同的输入会很健壮。 (无论你做什么,don't use regexps!)
<强>更新强>
但是,如果您要定位特定输入,就像您正在做的那样,您可以使用sscanf(如您所示)或cin.read()或regexp手动扫描。
请注意,此代码可能随时在HTML更改时中断(即使只是使用空格)。
因此,我/我们的建议是使用适当的工具来完成工作。 XML / HTML不是原始文本,不应该被视为原始文本。
如何编写python脚本呢? :)