|
|
|
| Здравствуйте!
мне нужно написать регулярку, которая бы вытаскивала текст между <DIV class=s> и <BR><CITE> Помогите составить рег.выражение, пожалуйста!
<DIV class=s>An automobile or motor <EM>car</EM> is a wheeled motor vehicle
for transporting passengers <B>.....</B> The first electric <EM>cars</EM> were
built around 1832, well before internal
<B>...</B><BR><CITE>
|
| |
|
|
|
|
|
|
|
для: icqheart
(11.09.2008 в 14:12)
| | Если class в div будет один и тот же, то
<pre>
<?
$text ="text<div class=s>An automobile or motor <EM>car</EM> is a wheeled motor vehicle
for transporting passengers <B>.....</B> The first electric <EM>cars</EM> were
built around 1832, well before internal
<B>...</B><BR><CITE>text2";
preg_match_all("#<DIV class=s>(.+)<br><cite>#isU",$text,$out);
print_r($out);
?>
|
| |
|
|
|
|
|
|
|
для: AcidTrash
(11.09.2008 в 17:43)
| | большое спасибо, AcidTrash! почему-то ничего не выводится. хотя вроде целиком листинг правильный, хотя последнюю его часть я не могу понять. Посмотрите, пожалуйста, может быть где-то в другом месте ошибка?
<?php
//Объявляем функцию парсинга выдачи
function parse_snip($query)
{
$request = 'http://www.google.com/search?hl=en&q='.urlencode(trim($query)); //какой урл передавать в cURL
$ch = curl_init(); //инициализация переменной для cURL
//параметры запроса
curl_setopt($ch,CURLOPT_URL,$request); //задаем урл который будем парсить
curl_setopt($ch,CURLOPT_TIMEOUT,20); //таймаут, если не отвечает в течение такого-то времени, рвем соединение
curl_setopt($ch,CURLOPT_REFERER,"http://www.google.com/"); //типа мы пришли с гугл.ком
curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.0; ru; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8"); //типа это такой вот наш браузер (фаерфокс)
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //не показывать страницу в браузере, а записать в переменную $result
$result=curl_exec($ch); //делаем запрос
//Регулярка которая указывает на снипеты
$pattern = '#<DIV class=s>(.+)<br><cite>#isU';
if(preg_match_all($pattern, $result, $matches))
print_r($matches);
{
for ($i=0; $i<count($matches[0]); $i++)
{
$link = $matches[2][$i];
$serp[] = $link;
}
}
break;
return $serp;
}
//Стартуем функцию парсинга
parse_snip("car");
?>
|
| |
|
|
|
|
|
|
|
для: icqheart
(11.09.2008 в 18:37)
| | посмотрите всё содержание полученной страницы , например так
<?php
#######################
// никак не определяется $query -------- $query = '';
########################
$request = 'http://www.google.com/search?hl=en&q='.urlencode(trim($query));
$ch = curl_init();
curl_setopt_array( $ch,
array(
CURLOPT_URL => $request,
CURLOPT_TIMEOUT => 20,
CURLOPT_REFERER => "http://www.google.com/",
CURLOPT_USERAGENT => "Opera/9.52 (Windows; U; ru)",
CURLOPT_RETURNTRANSFER => 1
));
$result=curl_exec($ch);
print '<hr>' . htmlspecialchars($result);
?>
|
и увидите что Вы получаете
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>302 Moved</TITLE></HEAD><BODY> <H1>302 Moved</H1> The document has moved <A HREF="http://www.google.com/webhp?hl=en">here</A>. </BODY></HTML>
|
Upd // поправлял | |
|
|
|
|
|
|
|
для: xx77
(11.09.2008 в 20:53)
| | запустил. дествительно, показывает 302 Moved. что это значит? что гугл мне не дает смотреть страницу?
я когда в свой код, который привел ранее, вставляю вместо регулярки просто "/auto/", то получается парсить это слово.
кстати, переменную $query сюда просто случайно не привел. у себя я ей давал значение:
$query= "cars"; | |
|
|
|
|
|
|
|
для: icqheart
(11.09.2008 в 21:28)
| | > <DIV class=s> и <BR><CITE>
я не нашёл такого в коде страницы
<?php
$query = 'cars';
########################
$request = 'http://www.google.com/search?hl=en&q='.urlencode(trim($query));
$ch = curl_init();
curl_setopt_array( $ch,
array(
CURLOPT_URL => $request,
CURLOPT_TIMEOUT => 20,
CURLOPT_REFERER => "http://www.google.com/",
CURLOPT_USERAGENT => "Opera/9.52 (Windows; U; ru)",
CURLOPT_RETURNTRANSFER => 1
));
$result=curl_exec($ch);
if ( preg_match('#<ol>.*</ol>#s', $result, $result))
print '<pre>' . htmlspecialchars($result[0]) . '<hr>'; ## наверное взять надо отсюда
preg_match_all('#<h3 class=r>.*?(?=<cite>)#s', $result[0], $result);
print_r($result); ## наверное примерно такое
}
?>
|
| |
|
|
|
|
|
|
|
для: xx77
(11.09.2008 в 22:28)
| | теперь я совсем запутался( | |
|
|
|
|
|
|
|
для: icqheart
(12.09.2008 в 21:42)
| | А собственно, в чем запутались?
Вв выведите эту страницу в исходник своим кодом и посмотрите, что там. | |
|
|
|