Skip to content

Latest commit

 

History

History
 
 

brra.bg-inquirer

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

Извличане на бизнес занимания по име на физическото лице

Извличане на данни от търговския регистър

Изисквания

  • nodes (тествано с 0.10.13)
  • phantomjs (тествано с 1.9.2)

За инсталацията на точна, лесно сменима версия на nodejs е удобно да се ползва nvm.

Щом има вече работещ nodejs , то phantomjs се инсталира лесно: npm install phantomjs --global

Ограничения на скрипта в момента

Следните са текущи ограничения, които бъдат премахнати:

1. се добавят работещи [*"Death By Captcha"*](http://deathbycaptcha.com/user/login) *user* и *pass* в `/common/node/decaptcha/index.js`

Употреба

mkfifo /var/tmp/brrabg
phantomjs --ignore-ssl-errors=true run.js --input=/var/tmp/brrabg --decaptcha=manual

Сега процесът ще чака за имена от /var/tmp/brrabg. Най-често ще има друг процес, който да пълни /var/tmp/brrabg с имена; едно име на всеки ред.

За да сработи примера можем в друг "терминал" да напишем:

echo "Иван Иванов Иванов" > /var/tmp/brrabg

По начина, който стартирахме crawler-а, ние активирахме ръчното въвеждане на CAPTCHA. Това означава, че ще трябва въведем текста от свалено във temp директорията CAPTCHA изображение:

Type in text from: /var/tmp/captcha.jpg

След като въведете текста, ще се изведат намерените бизнес занимания.

Очакван резултат

[{"company":"\"Иван\" ЕООД","title":"Управители"},{"company":"\"Иванушка\" ООД","title":"Съдружници"}]

Demo

Технологични решения

Зашо чист phantomjs, а не нещо друго?

Погледнати бяха:

  • selenium-webdriver, виж след списъка за забележки по webdriver
  • admc/wd, виж след списъка за забележки по webdriver
  • WaterfallEngineering/selenium-node-webdriver, виж след списъка за забележки по webdriver
  • n1k0/casperjs - има същия проблем като чисто phantomjs, че не може да ползва nodejs модули. тоест фактически просто е 1 допълнителен слой, който увеличава възможността за бъгове
  • WaterfallEngineering/SpookyJS - прекалено много абстакция, от phantomjs до casperjs и вече отделно до nodejs.
  • sheebz/phantom-proxy, wrapper, тоест няма винаги да е актуален с phantomjs, също превръща всяко повикване към phantomjs в async, което е лудост да се поддръжа
  • sgentle/phantomjs-node, wrapper, тоест няма винаги да е актуален с phantomjs, също превръща всяко повикване към phantomjs в async, което е лудост да се поддръжа
  • alexscheelmeyer/node-phantom, wrapper, тоест няма винаги да е актуален с phantomjs, също превръща всяко повикване към phantomjs в async, което е лудост да се поддръжа

Тези библиотеки, които следват Webdriver протокола внасят:

  1. Поддръжка на phantomjs под формата на WebDriver сървър. Това 100% означава време в предотратяване на crashes.
  2. Нова API, вместо да може да се ползва js директно. Защо трябва да се учи нов API, ако може просто с JS?

Затова: с чист phantomjs.

Най-проблемното на phantomjs:

  1. Не може да се види http отговора в суров вид.
  2. Това, че може да се преглежда само DOM-а води до това че единствено могат да се свалят XML документи, нищо друго
  3. Повикването на системни програми в Phantomjs е в много начален стадии. Не може да се подават данни към stdin на процеса
  4. Това прави невъзможно да се кобинират:
  5. Процес който сваля файл по дадено URL
  6. Процес, чийто stdin поема съдържанието на изображение и според съдържанието извършва ..нещо.

Възможни решение за JAVA applet-и