Ті самі слова у більш зручному для "парсингу" вигляді і стиснені в zip 11.9MB:
https://drive.google.com/file/d/127WaTG … drive_link
Ніяк не можу створити чіткі правила за якими воно буде витягатися з html в struct. Більшість просто, тобто <tr></tr>, <td></td> але є дані і у <a></a> і не завжди, треба ділити файл на однакові за правилами написання підфайли, поки що поділив тільки за кількістю тегів <tr></tr> кодом
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct ss
{
size_t pos;
string sstr;
};
ss sub(string str, string beg, string end, size_t pos)
{
ss ret;
size_t pos1=str.find(beg, pos);
if(pos1!=std::string::npos)
{
size_t pos2=str.find(end, pos1);
if(pos2!=std::string::npos)
{
ret.sstr=str.substr(pos1, pos2-pos1+end.size());
}
ret.pos=pos2;
return ret;
}
ret.pos = pos1;
return ret;
}
string LoadFile(string FilePath) {
ifstream infile(FilePath.c_str());
if (!infile.is_open()) {
cerr << "File\"" << FilePath << "\" not found." << endl;
return "";
}
string content;
string line;
while (getline(infile, line)) {
content += line + "\n";
}
infile.close();
return content;
}
int main()
{
string fromtable="<table>";
string totable="</table>";
string fromtr="<tr>";
string totr="</tr>";
ss op1, op2;
op1.pos=0;
op2.pos=0;
cout << "Input File: ";
string input_file_name;
cin >> input_file_name;
cout << "Output file name: ";
string output_file_name;
cin >> output_file_name;
ofstream outfile(output_file_name.c_str());
string str=LoadFile(input_file_name);
int icount=0;
while(op1.pos!=std::string::npos)
{
icount=0;
op2.pos=0;
op1=sub(str, fromtable, totable, op1.pos);
cout << op1.pos << " from " << str.size() << endl;
if(op1.pos!=std::string::npos)
{
while(op2.pos!=std::string::npos)
{
op2=sub(op1.sstr, fromtr, totr, op2.pos);
if(op2.pos!=std::string::npos) icount++;
}
if(icount==7) outfile << op1.sstr << endl;//7 замінити на кількість tr
}
}
return 0;
}
Я міняв о́, а́, и́ і подібні на о,а,и (звичайні) і десь помилково замінив а́ на "и" чи щось таке, мені для експерименту цього поки досить, а вам треба буде самим розбивати файли з попереднього поста, заміняти букви і видаляти цифри, символи і посилання для скорочення обсягу