Намиране на линковете в HTML код

Преди малко прочетох ето това:

Do not use REGEX to parse HTML

Perhaps the biggest mistake people make when trying to get URLs or link text from a web page is trying to do it using regular expressions. The job can be done with regular expressions, however, there is a high overhead in having preg loop over the entire document many times. The correct way, and the faster, and infinitely cooler ways is to use DOM.

By using DOM in the getLinks functions it is simple to create an array containing all the links on a web page as keys, and the link names as values. This array can then be looped over like any array and a list created, or manipulated in any way desired.

Note that error suppression is used when loading the HTML. This is to suppress warnings about invalid HTML entities that are not defined in the DOCTYPE. But of course, in a production environment, error reporting would be disabled and error reporting set to none.

По принцип виждам логиката, но в много случаи логиката е била изобличавана от няколко теста. Наистина ми е интересно от двата метода (RegExp и Dom), кой какви резултати ще даде. Също така е важен и обема на информацията – някои страници са наистина огромни „прасета“ ;) Както и да, ако ми остане малко време днес ще се взема да пробвам какви резултати ще се получат. Интересно е и как ще се спряват със „счупен“ HTML, и колко стабилно ще работят. Точно за големи по обем файлове, където е за предпочитане работата на „парче“ от файла, за да се пести памет (вместо да заредим цялото „прасе“ наведнъж), ми е интересно как може да се използват двата метода; докато решението с RegExp е повече от очевидно за мен, то това с Dom е по-… „по-екзотично“, защото трябва да се види ка кможе да се заобиколи проблема с цялостта на документа. Може би да се използват някакви междинни модули, като KSES и HtmlPurifier, ще помогнат да се изгладят парчетата от HTML-а. Абе ще видим, може и нещо друго да ми хрумне ;)

2 мнения за “Намиране на линковете в HTML код”

  1. За целта си има python ;-) за него има ужасно много HTML и XML парсъри, при които този въпрос въобще не стои. Да не говорим за удобството при работа после, което е несравнимо спрямо regexp.

  2. Ще се съглася с теб, въпреки че не разбирам нищо от Python, но знам какви подвизи правят парсерите на TopBlogLog ;)

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *