[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парсинг HTML
Страницы: 1, 2, 3, 4
Creater
Здравствуйте, уважаемые программисты. Мне требуется сделать парсинг html-страницы со сложной структурой. Использую Simple HTML Dom. Пробовал по-разному, результат нулевой.
Собственно говоря, сайт состоит из нескольких таблиц с данными, мне требуется вытянуть значение Install Mac address, равное 5C:26:0A:42:29:7F.
Код нужной таблицы на сайте прилагаю ниже, заранее благодарен за помощь.

<table id="PC_INVENTORY_INFORMATION_FROM_SMS_:_" align="center" border="1" width="850">
<tr colspan="2">
<td>
<font color="#FF0000"><font face="Courier" size="4"><B><CENTER>PC INVENTORY INFORMATION FROM SMS : </CENTER></B></font></font>
</td>
</tr>
<tr>
<td>
<font face="Courier" size="2">
&nbsp;&nbsp;&nbsp;Computer Name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& amp;nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&a mp;nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&am p;nbsp;: RUMOWW11129&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;SMS GUID &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& amp;nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&a mp;nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&am p;nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: F6B55FC6-F565-4C33-BCCB-88564C48F6AB&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;SMS GUID Created &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& amp;nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&a mp;nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 2011-06-17 05:00:15.000&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;SMS Client Version &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& amp;nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&a mp;nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 4.0.6487.2000&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;Install Mac address &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& amp;nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&a mp;nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 5C:26:0A:42:29:7F&nbsp;&nbsp;&nbsp;<BR>
<BR>
Игорь_Vasinsky
  $str = '   Computer Name           & amp;nbsp;         &a mp;nbsp;         &am p;nbsp;: RUMOWW11129   <BR>
   SMS GUID           & amp;nbsp;         &a mp;nbsp;         &am p;nbsp;     : F6B55FC6-F565-4C33-BCCB-88564C48F6AB   <BR>
   SMS GUID Created           & amp;nbsp;         &a mp;nbsp;       : 2011-06-17 05:00:15.000   <BR>
   SMS Client Version           & amp;nbsp;         &a mp;nbsp;     : 4.0.6487.2000   <BR>
   Install Mac address           & amp;nbsp;         &a mp;nbsp;    : 5C:26:0A:42:29:7F   '
;

preg_match_all("#[\w\d]{2,}\:{1}[\w\d]{2,}\:{1}[\w\d]{2,}\:{1}[\w\d]{2,}\:{1}[\w\d]{2,}\:{1}[\w\d]{2,} #sU", $str, $macs);

echo '<pre>' . print_r($macs, 1) . '</pre>';


Array
(
[0] => Array
(
[0] => 5C:26:0A:42:29:7F
)

)


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Creater
Спасибо, но проблема так же заключается в том, что мне нужно вытягивать эти адреса в цикле, то есть по сути каждый раз парсить новую страницу. Таких адресов нужно вытянуть примерно 2500, то есть 2500 таких таблиц. Сами понимаете, писать такой код 2500 раз - неприемлимо.
Игорь_Vasinsky
не вижу сути проблемы.

регулярка в несколько раз быстрее SHD отработает.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
Цитата
Сами понимаете, писать такой код 2500 раз - неприемлимо.

я упал под стол, но не смеятся. просто мне стало плохо.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
killer8080
Игорь_Vasinsky
можно и короче
'#(?:[a-f\d]{2}:){5}[a-f\d]{2}#i'
Игорь_Vasinsky
во во

?: - обазначает повтор {5} раз ? искал искал, не нашёл, пришлось развёрнутую писать

а двоеточие что не экранируешь?

и чем \w не устроило?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
killer8080
Цитата (Игорь_Vasinsky @ 7.12.2012 - 14:25)
а двоеточие что не экранируешь?

в данном контексте не важно, он здесь не является мета символом.
Цитата (Игорь_Vasinsky @ 7.12.2012 - 14:25)
и чем \w не устроило?

шестнадцатеричное число это 0-9a-f
Игорь_Vasinsky
Цитата
0-9a-f

но я же поймал c \w\d

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
killer8080
Цитата (Игорь_Vasinsky @ 7.12.2012 - 14:51)
Цитата
0-9a-f


но я же поймал c \w\d

поймал, но также поймал бы и ZF:GJ:TR:KL:MN:SW к примеру, а это уже не мак адрес wink.gif
Игорь_Vasinsky
))) а фигля им там делать))

лан, буду иметь ввиду wink.gif

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
killer8080
Цитата (Игорь_Vasinsky @ 7.12.2012 - 16:21)
))) а фигля им там делать))

когда составляешь патерн нужно учитывать все варианты, какие можешь учесть, если задано отловить мак адреса, значит шаблон должен четко ему соответствовать. В данном конкретном случае оно может и никак не проявится, но пофигизм может войти в привычку, и в дальнейшем где нибудь выйти боком.
Creater
А как мне в цикле записывать в переменную str этот html код ?
killer8080
Цитата (Creater @ 10.12.2012 - 14:43)
А как мне в цикле записывать в переменную str этот html код ?

$str .=
Creater
Мне нужно же получать этот код как-то. А в самой странице таких таблиц много. Как мне записывать в str именно то, что нужно ?
ps благодарю за разъяснение
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.