Ðамиране на линковете в 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-а. Ðбе ще видим, може и нещо друго да ми хрумне ;)
За целта Ñи има python ;-) за него има ужаÑно много HTML и XML парÑъри, при които този Ð²ÑŠÐ¿Ñ€Ð¾Ñ Ð²ÑŠÐ¾Ð±Ñ‰Ðµ не Ñтои. Да не говорим за удобÑтвото при работа поÑле, което е неÑравнимо ÑпрÑмо regexp.
Comment by ВеÑелин — октомври 6 @ 11:49
Ще Ñе ÑъглаÑÑ Ñ Ñ‚ÐµÐ±, въпреки че не разбирам нищо от Python, но знам какви подвизи правÑÑ‚ парÑерите на TopBlogLog ;)
Comment by Kaloyan — октомври 6 @ 12:05