Парсинг заголовков торрентов

12
EO
На сайте с 10.05.2005
Offline
114
865

Есть такой код в html-странице:

Всякий htmll-код....

<div class="upload1">
<div class="c1">
<div class="c9"> 9-й сезон/ 1-3 </div>
<div class="c10">Любительский (многоголосный)</div>
<div class="c3">1.31 ГБ</div>
<div class="c4">24 окт 2013</div>
<div class="c5">26486</div>
<div class="c6">
<div class="c7">
</div>

<div id="ti_134298" class="torrent-info hidden">
Всякий htmll-код....

Хотелось бы получать содержимое <div class="upload1" в виде массива.

Пробовал писать выражение хотя бы для парсинга, но оно не работает:

preg_match('/<div class="upload1">(.*)<div id=/U', $file, $trunc);

Подскажите, пожалуйста, как правильно написать регулярное выражение?

П.С. Сразу скажу, парсинг не для воровства контента с торрентов, а для того, чтобы мне иметь информацию о новых сериях любимых сериалов на одной странице, вместо открывания 20 страниц каждый день :)

Бооольшой портал о мааалом бизнесе (http://www.bizguru.ru/) | Более 1000 бизнес-программ (http://1.44mb.ru) По выходным не работаю - не ищите меня в сети. В понедельник я обычно сам возвращаюсь :)
дани мапов
На сайте с 06.09.2012
Offline
204
#1

Добавьте флаг s

preg_match('/<div class="upload1">(.*)<div id=/Us', $file, $trunc);

Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#2

Сначала нужно preg_match <div class="upload1" всё что внутри взять то что нужно.

А потом всё закинуть в preg_match_all и уже там получается массив.

Или сразу preg_match_all, я просто не знаю один ли там этот класс у вас или нет.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
maldivec
На сайте с 04.11.2008
Offline
160
#3
eugene_o:
Хотелось бы получать содержимое <div class="upload1" в виде массива.

Вы опишите какой массив в итоге должен получиться.

И, как выше указал LEOnidUKG, сообщите сколько таких <div class="upload1">...</div> на страницу. Один или же там список.

EO
На сайте с 10.05.2005
Offline
114
#4

Далее в странице идут еще такие же блоки:

<div class="upload1">...</div>

Их может быть больше 10 штук, нужен первый, а лучше первые 3, встретившиеся на странице.

Массив хотел такой строка 1 => '9-й сезон/ 1-3', 'Любительский (многоголосный)', '1.31 ГБ','24 окт 2013', '26486'. А далее строка 2 с содержимым второго дива upload1 и так далее...

---------- Добавлено 25.10.2013 в 10:40 ----------

дани мапов:
Добавьте флаг s

preg_match('/<div class="upload1">(.*)<div id=/Us', $file, $trunc);

Все равно пустой результат...

---------- Добавлено 25.10.2013 в 10:43 ----------

Думаю, никто не должен обидеться, если покажу источник, откуда хочу составлять анонсы: fast-torrent.ru/film/v-pole-zreniya.html

Хочу выводить верхние три строчки таблицы и так по паре десятков сериалов.

LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#5
eugene_o:
Далее в странице идут еще такие же блоки:
<div class="upload1">...</div>

Их может быть больше 10 штук, нужен первый, а лучше первые 3, встретившиеся на странице.

Массив хотел такой строка 1 => '9-й сезон/ 1-3', 'Любительский (многоголосный)', '1.31 ГБ','24 окт 2013', '26486'. А далее строка 2 с содержимым второго дива upload1 и так далее...

Тогда нужно два preg_match_all

Первый берёт нужные блоки. Потом через foreach перебором составлять уже массивы и опять же использовать preg_match_all

EO
На сайте с 10.05.2005
Offline
114
#6

Самая большая проблема для меня написать работающий preg_match_all :)

maldivec
На сайте с 04.11.2008
Offline
160
#7

Ну во первых вам нужно экранировать спецсимволы в своем регулярном выражении.

ВО вторых вам нужен тогда preg_match_all и кроме того, указать более точно, что парсить, а например...\<div class\=\"c9\"\>(.*)\<\/div\>... и т.д.

EO
На сайте с 10.05.2005
Offline
114
#8

Так:

preg_match_all('/\<div class\=\"c9\"\>(.*)\<\/div\>/Us', $file, $episode);

var_dump($episode);

Результат: array(2) { [0]=> array(0) { } [1]=> array(0) { } }

Ничего не получается...

B1
На сайте с 13.12.2012
Offline
28
#9

может луче заюзать simplehtmldom

<?php
require_once('simple_html_dom.php');
$str_html = file_get_contents("url");
$html = str_get_html($str_html);
$upload = array();
foreach($html->find('.upload1') as $element) {
$res = array();
$res[] = $element->find('.c9', 0)->innertext;
$res[] = $element->find('.c10', 0)->innertext;
$res[] = $element->find('.c3', 0)->innertext;
$res[] = $element->find('.c4', 0)->innertext;
$res[] = $element->find('.c5', 0)->innertext;
$upload[] = $res;
}
var_dump($upload);
?>
maldivec
На сайте с 04.11.2008
Offline
160
#10
eugene_o:
Ничего не получается...

Потому что в коде страницы классы не в двойных кавычках, а в одинарных.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий