Получение Url картинок из HTML-кода - C#
Формулировка задачи:
Здравствуйте. Задача у кода вытаскивать url`ы картинок с html файлов и сверять, нету ли этой картинки в тхт файле уже. Код я написал, но уж очееень долго он работает... (в url3.txt порядка 70 000 строк)
Спасибо
public void Run2()
{
string str;
DirectoryInfo dir = new DirectoryInfo(@"C:\html");
DirectoryInfo[] filesList = dir.GetDirectories();
foreach (DirectoryInfo file in filesList)
{
DirectoryInfo dir2 = new DirectoryInfo(file.FullName);
FileInfo[] filesList2 = dir2.GetFiles();
foreach (FileInfo file2 in filesList2)
{
//MessageBox.Show(file2.FullName); break;
str = string.Empty;
using (System.IO.StreamReader reader = System.IO.File.OpenText(file2.FullName))
{
str = reader.ReadToEnd();
Regex re1 = new Regex(@"(?<=<input .*?src\s*=\s*"")[^""]+(?="".*?>)");
Regex re2 = new Regex(@"(?<=<img .*?src\s*=\s*"")[^""]+(?="".*?>)");
//получаем набор значений для аттрибута src
MatchCollection mc1 = re1.Matches(str);
MatchCollection mc2 = re2.Matches(str);
foreach (Match m1 in mc1)
{
if (!FindSubstrInStr(m1.Value))
{
System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\url.txt", true);
sw.WriteLine(m1.Value + ";"); // запись
sw.Flush(); // очистка буфера
sw.Close();
}
}
foreach (Match m2 in mc2)
{
if (!FindSubstrInStr(m2.Value))
{
System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\url.txt", true);
sw.WriteLine(m2.Value + ";"); // запись
sw.Flush(); // очистка буфера
sw.Close();
}
}
}
}
}
}
static public bool FindSubstrInStr(string searchquery)
{
bool rtrn = false;
string[] lines = System.IO.File.ReadAllLines(@"C:\url3.txt");
foreach (string line in lines)
{
if (line.IndexOf(searchquery) != -1) { rtrn = true; break; }
}
return rtrn;
}Решение задачи: «Получение Url картинок из HTML-кода»
textual
Листинг программы
foreach (var file in dir.GetFiles("*.html", SearchOption.AllDirectories))