Creater
7.12.2012 - 14:45
Здравствуйте, уважаемые программисты. Мне требуется сделать парсинг 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">
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 <BR>
<BR>
Игорь_Vasinsky
7.12.2012 - 15:03
$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
7.12.2012 - 15:11
Спасибо, но проблема так же заключается в том, что мне нужно вытягивать эти адреса в цикле, то есть по сути каждый раз парсить новую страницу. Таких адресов нужно вытянуть примерно 2500, то есть 2500 таких таблиц. Сами понимаете, писать такой код 2500 раз - неприемлимо.
Игорь_Vasinsky
7.12.2012 - 15:15
не вижу сути проблемы.
регулярка в несколько раз быстрее 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
7.12.2012 - 15:16
Цитата |
Сами понимаете, писать такой код 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
7.12.2012 - 15:18
Игорь_Vasinskyможно и короче
'#(?:[a-f\d]{2}:){5}[a-f\d]{2}#i'
Игорь_Vasinsky
7.12.2012 - 15:25
во во
?: - обазначает повтор {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
7.12.2012 - 15:31
Цитата (Игорь_Vasinsky @ 7.12.2012 - 14:25) |
а двоеточие что не экранируешь? |
в данном контексте не важно, он здесь не является мета символом.
Цитата (Игорь_Vasinsky @ 7.12.2012 - 14:25) |
и чем \w не устроило? |
шестнадцатеричное число это 0-9a-f
Игорь_Vasinsky
7.12.2012 - 15:51
но я же поймал 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
7.12.2012 - 16:18
Цитата (Игорь_Vasinsky @ 7.12.2012 - 14:51) |
Цитата 0-9a-f
но я же поймал c \w\d |
поймал, но также поймал бы и
ZF:GJ:TR:KL:MN:SW к примеру, а это уже не мак адрес
Игорь_Vasinsky
7.12.2012 - 17:21
))) а фигля им там делать))
лан, буду иметь ввиду
_____________
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
7.12.2012 - 18:17
Цитата (Игорь_Vasinsky @ 7.12.2012 - 16:21) |
))) а фигля им там делать)) |
когда составляешь патерн нужно учитывать все варианты, какие можешь учесть, если задано отловить мак адреса, значит шаблон должен четко ему соответствовать. В данном конкретном случае оно может и никак не проявится, но пофигизм может войти в привычку, и в дальнейшем где нибудь выйти боком.
Creater
10.12.2012 - 15:43
А как мне в цикле записывать в переменную str этот html код ?
killer8080
10.12.2012 - 15:56
Цитата (Creater @ 10.12.2012 - 14:43) |
А как мне в цикле записывать в переменную str этот html код ? |
$str .=
Creater
10.12.2012 - 16:03
Мне нужно же получать этот код как-то. А в самой странице таких таблиц много. Как мне записывать в str именно то, что нужно ?
ps благодарю за разъяснение
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.