|
|
|
| Граблю выдачу с поисковика. Пытаюсь выдрать ссылки и соответствующие снипеты. в переменной $c - кусок выдачи. Вот код с рег. выражением:
<?php
$c = '<div class=g><h2 class=r><a class=l href="http://www.chrysler.com.au/"><b>Chrysler</b> Australia</a></h2><table border=0 cellpadding=0 cellspacing=0><tr><td class=j><font size=-1><b>CHRYSLER</b> 300C SRT8. Take on the open road today. Learn more. STREET & RACING TECHNOLOGY · <b>CHRYSLER</b> OWNERS · NEWS & EVENTS · FINANCE & INSURANCE <b>...</b><br><span class=a>www.<b>chrysler</b>.com.au/ - 15k - </span><nobr><a class=fl href="http://209.85.165.104/search?q=cache:UZYiHj9h-kAJ:www.chrysler.com.au/+Chrysler&hl=en&ct=clnk&cd=6&lr=lang_en">Cached</a> - <a class=fl href="/search?hl=en&lr=lang_en&q=related:www.chrysler.com.au/">Similar pages</a></nobr></font></td></tr></table></div> <div class=g><h2 class=r><a class=l href="http://www.daimlerchrysler.ca/">DaimlerChrysler Canada Inc.</a></h2><table border=0 cellpadding=0 cellspacing=0><tr><td class=j><font size=-1><b>Chrysler</b> Canada's Homepage. Contains pages for all current <b>Chrysler</b> models where you can view images and information.<br><span class=a>www.daimler<b>chrysler</b>.ca/ - 7k - </span><nobr><a class=fl href="http://209.85.165.104/search?q=cache:DQPivr6negcJ:www.daimlerchrysler.ca/+Chrysler&hl=en&ct=clnk&cd=7&lr=lang_en">Cached</a> - <a class=fl href="/search?hl=en&lr=lang_en&q=related:www.daimlerchrysler.ca/">Similar pages</a></nobr></font></td></tr></table></div>';
$p = '|<h2 class=r><a class=l href=(.+)><(.+)<\/a><\/h2><font size=-1>(.+)<tr><td class=j><font size=-1>(.+)<br><span|siU';
preg_match_all($p, $c, $out);
echo $out[1];
?>
|
Выдает почему-то html, что в переменной $c, а далее кусок кода шаблона. Не могу понять в что не правильно. Может быть, в тексте много спецсимволов и их надо экранировать? | |
|
|
|
|
|
|
|
для: dmitrii_r
(16.01.2007 в 11:29)
| | У вас после <\/h2> идёт <font size=-1> в то время как в HTML-тексте идёт начало таблицы... кроме того, символ "-" является специальным - его нужно экранировать. | |
|
|
|
|
|
|
|
для: cheops
(16.01.2007 в 13:26)
| | Я уже обнаружил отличие в тексте и шаблоне. Пока упрощаю грабинг. Только ссылка и title, Вот новый шаблон:
$p ='|<div class=g><h2 class=r><a class=l href=\"([^"]+)\">(.+)<\/a><\/h2>|siU';
|
Но и это не работает 8( Гугл не хочет сдаваться. | |
|
|
|
|
|
|
|
для: dmitrii_r
(16.01.2007 в 11:29)
| | Выдача Гугла разная для разных IP, русская google.ru отличается от того, что выдает google.com. Не только найденным и и html кодом, я взял шаблон для google.ru видимо, поправил на com-ский, но не работает. | |
|
|
|
|
|
|
|
для: dmitrii_r
(16.01.2007 в 11:29)
| | Работает такой код:
<?php
$c = '<div class=g><h2 class=r><a class=l href="http://www.chrysler.com.au/"><b>Chrysler</b> Australia</a></h2><table border=0 cellpadding=0 cellspacing=0><tr><td class=j><font size=-1><b>CHRYSLER</b> 300C SRT8. Take on the open road today. Learn more. STREET & RACING TECHNOLOGY · <b>CHRYSLER</b> OWNERS · NEWS & EVENTS · FINANCE & INSURANCE <b>...</b><br><span class=a>www.<b>chrysler</b>.com.au/ - 15k - </span><nobr><a class=fl href="http://209.85.165.104/search?q=cache:UZYiHj9h-kAJ:www.chrysler.com.au/+Chrysler&hl=en&ct=clnk&cd=6&lr=lang_en">Cached</a> - <a class=fl href="/search?hl=en&lr=lang_en&q=related:www.chrysler.com.au/">Similar pages</a></nobr></font></td></tr></table></div> <div class=g><h2 class=r><a class=l href="http://www.daimlerchrysler.ca/">DaimlerChrysler Canada Inc.</a></h2><table border=0 cellpadding=0 cellspacing=0><tr><td class=j><font size=-1><b>Chrysler</b> Canada's Homepage. Contains pages for all current <b>Chrysler</b> models where you can view images and information.<br><span class=a>www.daimler<b>chrysler</b>.ca/ - 7k - </span><nobr><a class=fl href="http://209.85.165.104/search?q=cache:DQPivr6negcJ:www.daimlerchrysler.ca/+Chrysler&hl=en&ct=clnk&cd=7&lr=lang_en">Cached</a> - <a class=fl href="/search?hl=en&lr=lang_en&q=related:www.daimlerchrysler.ca/">Similar pages</a></nobr></font></td></tr></table></div>';
$p ='|<h2 class=r><a class=l href=(.+)><(.+)<\/a><\/h2><table border=0 cellpadding=0 cellspacing=0><tr><td class=j><font size=\-1>(.+)<br><span|siU';
preg_match_all($p, $c, $out);
for ($i = 0; $i < count($out[1]); $i ++)
{
echo "<a href=".$out[1][$i].">".$out[2][$i]."</a><br>".$out[3][$i]."End of the grabbing";
}
?>
Только выдает почему-то лишь первую найденную ссылку с соответствующим снипетом.
|
| |
|
|
|
|
|
|
|
для: dmitrii_r
(16.01.2007 в 15:02)
| | Если убрать модификатор "жадности" U, то выдает все ссылки с соответствующими снипетами, но в первой ссылке вылазит не нужный текст "Cash Similar page" Как сбалансировать "жадность"? | |
|
|
|
|
|
|
|
для: dmitrii_r
(16.01.2007 в 15:02)
| | В зенд студио работает с отмеченным недостатком - либо одна выдача по ссылке с "жадностью", либо без "жадности" все, но и "ненужный" лишний код вылазит.
В Денвере и на сайте у хостера - не работает нифига, выдает куски кода. Возможно из-за уровня ошибок!? Я не очень силен в деталях PHP. | |
|
|
|
|
|
|
|
для: dmitrii_r
(16.01.2007 в 15:53)
| | Уровень ошибок выставил в error_reporting(E_NOTICE); Теперь работает, но "жадность". Кто поможет разобраться? Можно, конечно, еще разик обработать текст и выкинуть ненужное. Но, хочется чтобы было красиво! | |
|
|
|