Форум → Программирование → PHP для идиотов → Хуево. Парсинг сайта.
Хуево. Парсинг сайта.
Страницы: ← Следующая страница →
-
возникла необходимость ограбить сайт http://kinomob.info по контенту. Я думал что сложное для меня скачка и написал довнлоадер. Оказалось что самое сложное для меня парсинг ссылок и названия с описаниями. Вот например категория http://kinomob.info/cheats,1,1.htm. мне нужно выудить весь список урлов в таблице, и потом перейти по ссылке и выудить название, описание и ссылку. пытался работать со страничкой как с xml, но код пиздец не валидный. Использовал Tidy, вроде ничего, но ресурсы кушает по страшному. Я решил использовать регулярки, но в них я деревянный, простое могу, а вот страничку не придумаю как. Ткните кто знает пожалуйста.С возвращением, Пiха! hyperoff.ru - качественный хостинг php
-
12 июля 2010 г. 15:34, спустя 1 час 25 минут 49 секунд
phpQuery тоже загинается на невалидном документе? -
12 июля 2010 г. 15:56, спустя 22 минуты 16 секунд
Абырвалг, че то первый раз слышу про такое, уже читаю.С возвращением, Пiха! hyperoff.ru - качественный хостинг php -
12 июля 2010 г. 16:03, спустя 6 минут 32 секунды
довай. Не забудь о резалтах написать, так как мне самому интересно -
12 июля 2010 г. 17:23, спустя 1 час 20 минут 55 секунд
phpQuery использует XML разборщик и довольно требователен к памяти на больших документах (от 6 метров)
правда работать с селекторами очень удобно после jQuery
по теме - регулярки в путь. -
12 июля 2010 г. 18:20, спустя 56 минут 52 секунды
Хочешь удобства присущее jQuery - phpQuery. Хочешь простоты, гибкости, головной боли после небольшой смены (типа кавычек) верстки - юзай регулярки.
Но второе еще хорошо тем, что наконец выучишь регулярки хорошоhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
12 июля 2010 г. 18:25, спустя 5 минут 3 секунды
Наверно для быстроты разработки буду использовать phpQuery. будет время буду с регулярками мучаться. говорят легко, а я на них как баран на новые воротаС возвращением, Пiха! hyperoff.ru - качественный хостинг php -
12 июля 2010 г. 23:40, спустя 5 часов 14 минут 32 секунды
adw0rd, если тидить документ, то головной боли этой уже не стает :)
другое дело, есть ли у заказчиков тиди, но это уже дело третье)Сапожник без сапог -
13 июля 2010 г. 11:22, спустя 11 часов 42 минуты 16 секунд
Можно сделать так:<?php
error_reporting(0);
$dom = new DOMDocument();
$file = 'http://kinomob.info/cheats,1,1.htm';
$dom->loadHTMLFile($file);
$table = $dom -> getElementsByTagName('table');
tr = $table -> item(9) -> getElementsByTagName('tr');
$td = $tr -> item(3) -> getElementsByTagName('td');
$a = $td -> item(0) -> getElementsByTagName('a');
$hre= $a ->item(0) -> getAttribute("href") ;
$links[$link]='http://kinomob.info/'.$hre;
echo '<br/>',$links[$link];
?>
Для получения всех ссылок просто поставить цикл со смещением $td = $tr -> item(3) на 1, т.е. 4,5, и т.д.Спустя 121 сек.<?php
error_reporting(0);
$dom = new DOMDocument();
$file = 'http://kinomob.info/cheats,1,1.htm';
$dom->loadHTMLFile($file);
$table = $dom -> getElementsByTagName('table');
$tr = $table -> item(9) -> getElementsByTagName('tr');
$td = $tr -> item(3) -> getElementsByTagName('td');
$a = $td -> item(0) -> getElementsByTagName('a');
$hre= $a ->item(0) -> getAttribute("href") ;
$links[$link]='http://kinomob.info/'.$hre;
echo '<br/>',$links[$link];
?>
Здесь правильно. -
13 июля 2010 г. 17:53, спустя 6 часов 31 минуту 3 секунды
ога, верстку изменили и песта, лишний элемент вывелся и песта, если уж юзаешь dom пхпшный, для поиска элементов пользуй xpath, куда более гибкие решения позволяет делатьWork, buy, consume, die -
13 июля 2010 г. 18:22, спустя 28 минут 52 секунды
да dom говорят жрет много, в книге видел даже. сам не знаю.но этот вариант пробовал.С возвращением, Пiха! hyperoff.ru - качественный хостинг php -
16 июля 2010 г. 5:24, спустя 2 дня 11 часов 2 минуты
я тут curl'ом попробовал…<?php
function getPage ($url, $regx) {
$uagent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_USERAGENT, $uagent);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$r = curl_exec($ch);
preg_match_all($regx, $r, $a);
curl_close($ch);
return $a;
}
$url = 'http://kinomob.info/';
$link = $url.'cheats,1,1.htm';
$find = '|(cheat,1,1,)(\d+)(.htm)|sei';
$ftitle = '|<h1>(.+?)</h1>.+(uploads/[^"]+).+|sei';
$mas = getPage($link, $find);
for ($i=0;$i<count($mas[0]);$i++) {
echo $url.$mas[0][$i].'<br />';
$newlink = $url.$mas[0][$i];
$info = getPage($newlink,$ftitle);
echo $info[1][0].'<br />';
echo $url.$info[2][0].'<br /><hr />';
}
?>[/php]
только я не силен в регулярках, вытащил заголовок и картинку… нуна еще описание и форму с кнопкой "скачать"…
вот что мне выводит:
[img]http://j.imagehost.org/0743/000.jpg[/img]Высокоуровневое абстрактное говно -
16 июля 2010 г. 8:34, спустя 3 часа 9 минут 34 секунды
Stasovsky, for на foreach поменяй , смысл этого
я вобще не понимаю, почему не в одну строку ?$url = 'http://kinomob.info/';
$link = $url.'cheats,1,1.htm'; -
16 июля 2010 г. 13:10, спустя 4 часа 35 минут 55 секунд
потому что $url дальше использовалась))Высокоуровневое абстрактное говно -
20 августа 2010 г. 14:57, спустя 35 дней 1 час 47 минут
Stasovsky, выручай. нужно зайти на страницу и выудить описание с ссылкой на закачку.С возвращением, Пiха! hyperoff.ru - качественный хостинг php
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!