|
|
|
| Пробую написать парсер для сайта
беру страницу http://allspo.ru/main/operators/
в коде есть такое место
<a href="/main/detail/operator/?id=2916" onClick="ShowWin('/window/operator/?id=2916',500,400,'_blank','yes');
|
мне нужно получить все эти id и дальше уже идти по этим ссылкам и оттуда парсить детальную инфу, но пока никак не получается выдернуть этот id
вот мое регулярное выражение
$link_regexp = '<a href="/main/detail/operator/\?id=(.*)" onClick=">';
в питоне пытался так
matches = re.compile("/window/operator/?id=\d+", re.S).search(text)
print matches
тоже не прокатило :(
подскажите как мне выдернуть этот id? | |
|
|
|
|
|
|
|
для: Unreal
(23.07.2008 в 16:35)
| | В PHP нужны еще органичителя паттерна.
> onClick=">
И почему у Вас так, когда в примере для onClick есть какое-то непустое значение? | |
|
|
|
|
|
|
|
для: BinLaden
(23.07.2008 в 16:40)
| | вот немного переделал, но находит почему то одну ссылку только
<?php
$loaded_extensions = get_loaded_extensions();
if (!in_array('curl', $loaded_extensions)) {
die('Curl extension is not in list of loaded extensions, grabber unable to work without it.');
}
$operators_link = 'http://allspo.ru/main/operators/';
$proxy_options = array('host' => '192.168.0.1', 'port' => '8080');
/**
* @param string $url Example: http://somehost.com/
* @param mixed $proxy_options Example: array('host' => '192.168.0.1', 'port' => 8080);
*/
function get_url($url, $proxy_options = array()) {
$curl_options = array();
if (strlen($url) < 4) {
print "\n'$url' is not valid URL. ";
}
if (count($proxy_options) and isset($proxy_options['host']) and isset($proxy_options['port'])) {
$curl_options[CURLOPT_PROXY] = $proxy_options['host'] . ':' . $proxy_options['port'];
$curl_options[CURLOPT_HTTPPROXYTUNNEL] = 1;
}
$curl_options[CURLOPT_RETURNTRANSFER] = 1;
$curl_options[CURLOPT_URL] = $url;
$curl_options[CURLOPT_USERAGENT] = 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0';
$curl_options[CURLOPT_HEADER] = false;
$ch = curl_init();
curl_setopt_array($ch, $curl_options);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
$link_regexp = '#<a href="/main/detail/operator/\?id=(.*)" onClick="ShowWin#isU';
$operator_page = get_url($operators_link, $proxy_options);
preg_match($link_regexp, $operator_page, $matches);
var_dump($matches);
|
| |
|
|
|
|
|
|
|
для: Unreal
(23.07.2008 в 16:48)
| | preg_match() ищет только первое совпадение.
Вам нужна функция preg_match_all(). | |
|
|
|
|
|
|
|
для: BinLaden
(23.07.2008 в 16:52)
| | спасибо :) | |
|
|
|