Парсинг контактов с сайта представленных изображением.
Как спарсить и распознать контакте на сайте которые представлены в виде картинок?
Понадобилось очень "злым" людям, как то у конкурентов базу емайл с сайта конкурента скачать, сами емайл адреса конкурент отдавал не в открытом виде, а формировал в виде изображений, соответственно руками это делать не интересно, решили изобретать велосипед с минимальным ручным трудом, минимальной тратой времени и максимальной автоматизацией.
Первым делом написали на php небольшой скрипт который бегал по сайту и сохранял нужные картинки.
Сам скрипт не привожу, для каждого сайта он свой, но для наглядности кусочек который бегает и сохраняет картинки.
1 2 3 4 5 |
foreach ($mass as $v) { $url = file_get_contents("https://......?offerId=".$v); file_put_contents("out/".$v.'.jpg',$url); .... } |
В итоге, мы получили коло 140 000 изображений с емайл адресами и разной шелухой. Шаблон практически всегда был один, но самое удачное было в том, что емайл формировался как "Email: и сам емайл адрес".
Далее встал второй вопрос, как все это дело распознать? Первым на ум пришло все это запихнуть в FineReader но он сдался, сожрал 12 гигов RAM и повесился 🙂
Поискав по интернету, наткнулись на интересную софтинку, которая из командной строки умеет распознавать текст, звать это чудо vietocr (ссылка на нее sourceforge.net/projects/vietocr/files/vietocr/5.2/). Мы качали версию для windows.
Но у нас была загвоздка в том, что картинки которые принимает vietocr как мы поняли нужны были только JPG, а у нас в оригинале PNG, хоть мы и сохраняли их с разрешением JPG.
На помощь пришла FSResizer38 который мы довольно быстро перегнали PNG в JPG и получили нужный формат.
Далее через vietocr и bat скрипты, прогнали распознавание всех файлов вот таким кривым но примитивным скриптом.
1 2 3 4 5 |
@Echo Off rem Папка с изображениями Set Folder=C:\out rem Путь к консольной распознавалки For %%I In (%Folder%\*) do C:\VietOCR-5.2\VietOCR3\tesseract-ocr\tesseract.exe %%I %%I.txt |
Скрипт, пробегается по картинкам, и для каждой формирует название (картинка.jpg.txt), почему именно так? да а зачем нам больше, на выходи мы получили для каждой картинки txt распознанный файл.
Далее, все эти файлы мы скрепили в один, вот таким не хитрым скриптом.
1 |
copy C:\out\*.txt C:\output.txt /b |
Получив output.txt открыли его через notepad++ т.к. он очень хорошо справляется с большим кол-вом данных и получили так скажем шелуху + наши емайлы в формате Email: .....
Встал вопрос, как же из всего этого творения, достать только емайлы? Ответ прост, делаем поиск по Email: и жмем кнопку "Найти все в Текущем документе", после поиска, notepad++ выдает окно из которого можно скопировать только найденные значения, коих оказалось более 100 000.
Выделяем все найденное, копируем на новый лист, убирает приставку Email: и перемещаем в Excel. В Excel делаем "Удалить дубликаты" и на выходе получаем уникальный список email адресов.
P.S. данная статья только показывает возможности распознавания текста и никак не является пособием для парсинга сайтов.
Свежие комментарии