[/b/] [/d/] [/tu/] [/a/] [/34/] [/ph/] [/wa/] [/cg/] [/t/]
Зой, а ты можешь запилить веб-сервис, который сможет отдавать треда и посты не по хттп, а по xml?Лично я бы это использовал чтобы няшного вишмастера для Этой борды. Давай сделаем подарок посетителям.
>чтобы няшногоФИКС: для няшного
>чтобы няшного
ФИКС: для няшного
>>2099Как будто бы трудно распарсить вакабу. Сделай по-грязному на регекспах хоть что-нибудь, тогда уже проси мод-куна.
>>2101Это костыли. Я начал парсить вакабу, но, блеять, xml упростит часть программы по выкачки постов в разы. И к тому же, xml не будет требовать каждый раз выгружать весь тред. достаточно подгрузить несколько новых постов.
>>2099<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">же
>>2102> выгружать весь тредА вдруг в нём посты поудаляли? К тому же, по трафику это ничто по сравнению в загрузкой одной картинки.>Я начал парсить вакабуКстати чем? Я бы посоветовал на первое время тупо регулярками пройтись в поисках постов - одна для поиска начала поста, вторая для конца. Всё, что между, всё твоё. О производительности пока не думай, если у тебя получится что-нибудь годное, можно будет подумать и об api к новерю, с xml-запросами конкретного поста.
>>2102
> выгружать весь тред
А вдруг в нём посты поудаляли? К тому же, по трафику это ничто по сравнению в загрузкой одной картинки.
>Я начал парсить вакабу
Кстати чем? Я бы посоветовал на первое время тупо регулярками пройтись в поисках постов - одна для поиска начала поста, вторая для конца. Всё, что между, всё твоё. О производительности пока не думай, если у тебя получится что-нибудь годное, можно будет подумать и об api к новерю, с xml-запросами конкретного поста.
Нашел следующее:http://search.cpan.org/~jfearn/HTML-Tree-4.2/lib/HTML/Tree.pmhttp://annocpan.org/~GAAS/HTML-Parser-3.65/lib/HTML/TokeParser.pmhttp://annocpan.org/~GAAS/HTML-Parser-3.68/Parser.pmСклоняюсь к первому. Используя его, при помощи еще одного модуля, перевожу xml в hash структуру, данные которого и будут использоваться для выкачки превью и вывода всего на форму.
>>2105Алсо, может тут есть знающие perl regexp? реально ли одним сложным и длинным регекспом $very_long_regexp, распарсить все сообщения? тред будет вида:while($page =~ /$very_long_regexp/g) { my ($post_id, $datetime, <...и т.д...>) = @_; <... тут что-то делаем> push @posts, \%new_post;}У меня тут выбор: самому парсить, своим регекспом, или испульзовать готовые модули парсеры как тут: >>2105>>2104>А вдруг в нём посты поудаляли?Информацию об этом можно прикреплять к xml в виде служебного тега.>>2103Что это дает?
>>2105Алсо, может тут есть знающие perl regexp? реально ли одним сложным и длинным регекспом $very_long_regexp, распарсить все сообщения? тред будет вида:while($page =~ /$very_long_regexp/g) { my ($post_id, $datetime, <...и т.д...>) = @_; <... тут что-то делаем> push @posts, \%new_post;}У меня тут выбор: самому парсить, своим регекспом, или испульзовать готовые модули парсеры как тут: >>2105
>>2104
>А вдруг в нём посты поудаляли?
Информацию об этом можно прикреплять к xml в виде служебного тега.
>>2103Что это дает?
>>2106XHTML sort of XML
>>2107>XHTML sort of XMLты в этом уверен, няша?
>>2107
>XHTML sort of XML
ты в этом уверен, няша?
>>2106Реально, но негуманно. Вообще можно даже с регекспами не заморачиваться, просто строчки искатьИщешьd=\"replyЧитаешь число за ним - это номер поста.Ищешьe">Читаешь до ближайшего <Это имя постера.Ищешь >читаешь до ближайшего <Это датаИщешь<blockquote>Запоминаешь позицию, ищешь </blockquote>Всё, что между - пост.Заворачиваешь в цикл и радуешься.Теперь справишься, или потратить 10 минут и написать за тебя?
>>2106Реально, но негуманно. Вообще можно даже с регекспами не заморачиваться, просто строчки искать
Ищешь
d=\"reply
Читаешь число за ним - это номер поста.
e">
Читаешь до ближайшего
<
Это имя постера.
>
читаешь до ближайшего
Это дата
<blockquote>
Запоминаешь позицию, ищешь
</blockquote>
Всё, что между - пост.
Заворачиваешь в цикл и радуешься.
Теперь справишься, или потратить 10 минут и написать за тебя?
Только на этом треде не испытывай, а то этот >>2109 пост тебе всё поломает, лол.
>>2110А что, не знаешь, что служебные знаки типа <, >, &, и т. п., в хтмл заменяется специальными кодами. И ничего страшного от этого треда не будет.
>>2109Два чаю этому господину. Побежал писать
>>2108Да.
>>2113Ок. А значит ли это, что очень легко сделать из хhtml xml?
#!/usr/bin/perl#ПОСАНЫ, Я СДЕЛАЛ ЭТО! ПРОШУ ПОМОЩИ В ТЕСТИРОВАНИИ.use warnings;use threads;my $page = `cat page.html`;while($page =~ /name="delete" value="(\d+)"/gc) {my $id = $1;$page =~ /postername">(?:<a href="mailto:([^"]+)">)?([^<]+)</gc;my ($mail, $name) = ($1, $2);$page =~ />([^<]+)</gc;my $datetime = $1;$page =~ /(?:<a target="_blank" href="\/d\/src\/(\d+\.\w+).*?)?<blockquote>(.*?)<\/blockquote>\s+(?:<\/td>|<table>)/gc;my ($image, $message) = ($1, $2);print "ID = $id\n";print "Name = $name\n";print "Mail = $mail\n" if defined $mail;print "Datetime = $datetime\n";print "Image = $image\n" if defined $image;print "-------------Message---------------\n";print "$message\n";print "###################################\n";}
#!/usr/bin/perl#ПОСАНЫ, Я СДЕЛАЛ ЭТО! ПРОШУ ПОМОЩИ В ТЕСТИРОВАНИИ.
use warnings;use threads;
my $page = `cat page.html`;
while($page =~ /name="delete" value="(\d+)"/gc) {
my $id = $1;$page =~ /postername">(?:<a href="mailto:([^"]+)">)?([^<]+)</gc;my ($mail, $name) = ($1, $2);$page =~ />([^<]+)</gc;my $datetime = $1;$page =~ /(?:<a target="_blank" href="\/d\/src\/(\d+\.\w+).*?)?<blockquote>(.*?)<\/blockquote>\s+(?:<\/td>|<table>)/gc;my ($image, $message) = ($1, $2);print "ID = $id\n";print "Name = $name\n";print "Mail = $mail\n" if defined $mail;print "Datetime = $datetime\n";print "Image = $image\n" if defined $image;print "-------------Message---------------\n";print "$message\n";print "###################################\n";
}
>>2115>use threads;ох щи.use strict;
>>2115
>use threads;
ох щи.use strict;
>>2114Сколько можно повторять что xhtml это подвид xml? Тоесть для того чтобы сделать из xhtml xml тебе ничего не нужно делать.
>>2099пусть лучше звёздочки запилит. модкун, блджад!
>>2118Нет.
>>2119модкун!
>>2120Ни в коем случае, обязательно.
>>2115Всем похуй же
Встроенный рсс было бы хорошо, не нужно было бы качать и парсить страницы. Хотя, новерь достаточно медленный и, я ни разу не видел необходимости подписываться на треды, не уверен даже, работает мой chan2rss или нужно модифицировать.
>>2123Так неинтересно. А как же убивать время вяло перелистывая новерь?
>>2124Рсс хороши в б ычана, например, когда хочешь следить за интересным тредом, но не посещаешь раздел. Закладки для этого неудобны, держать открытую вкладку тоже неудобоно, тред обновляется редко, а браузер тормозит от них, особенно, если там много постов. Как я уже сказал, на новере треды не успевают уплывать на 80 страницу за две недели, поэтому смысла особого нет.
- wakaba 3.0.7 + futaba + futallaby -