Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Разное > Ваши программы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 13.01.2011, 20:24
nex nex вне форума
Прохожий
 
Регистрация: 12.01.2011
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от Konrad
Влом проверять... но твоя прога тогда сначала связвается с твоим сайтом, грузит что-то , а далее обращается на башорг?
Нет!!!

Почитай тут http://bash.org.ru/webmaster

Код:
Ты давно хотел разместить на своем сайте цитату с bash.org.ru, но не знаешь, как? Не беда, этот раздел тебе поможет.

Система крайне проста и требует лишь самого базового знания HTML. Необходимо и достаточно разместить в любом удобном тебе месте на твоем сайте следующий фрагмент кода:
<div style="border: 1px solid #9999bb; background: #f0f0ff; padding: 5px; font-family: 'Monaco', 'Courier New', monospace; font-size: 10pt;">
<script language="JavaScript" type="text/javascript" src="http://bash.org.ru/forweb/">
</script>
</div> 

Так как мне нужно не на сайт, а в прогу, то я вместо сайта вписал этот скрипт в Html документ. А хранится он на моём FTP. Если его просто открыть то получится просто цитата. Никакого "моего сайта" нет.


Цитата:
Довольно таки интересная схема для ...
Для, извините, говна?

Последний раз редактировалось nex, 13.01.2011 в 21:37.
Ответить с цитированием
  #17  
Старый 13.01.2011, 20:34
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Ну можно спомщью IdHTTP.Get() отправить запрос на 'http://bash.org.ru/forweb/' и получить цитату+всякий бред, распарсить ее и вывести в Memo но здесь действует 10 сек лимит

Как вариант можно отправлять запрос на 'http://bash.org.ru/quote/'+IntToStr(Index), где Index это номер цитаты (сейчас он от 1 до 409301) выбрасываешь простым рандомом, получаешь страницу, парсишь ее и выводишь нудное опять же в memo
Ответить с цитированием
  #18  
Старый 13.01.2011, 20:54
nex nex вне форума
Прохожий
 
Регистрация: 12.01.2011
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от Drozh
Как вариант можно отправлять запрос на 'http://bash.org.ru/quote/'+IntToStr(Index), где Index это номер цитаты (сейчас он от 1 до 409301) выбрасываешь простым рандомом, получаешь страницу, парсишь ее и выводишь нудное опять же в memo

А вот это НЕПЛОХАЯ мысля))) Спасибо. НО Выведется же вся страница.. а нужно отсеять только цитату...

Как можно организовать Парсинг, на моём примере?

Последний раз редактировалось nex, 13.01.2011 в 20:58.
Ответить с цитированием
  #19  
Старый 13.01.2011, 21:54
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
По умолчанию

Цитата:
Сообщение от nex
А вот это НЕПЛОХАЯ мысля))) Спасибо. НО Выведется же вся страница.. а нужно отсеять только цитату...

Как можно организовать Парсинг, на моём примере?

На самом деле, все давольно просто:

Вот страница баша с цитатой:

Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
	<title>bash.org.ru - Цитатник Рунета</title>
	<link rel="shortcut icon" href="http://s.bash.org.ru/favicon.ico" type="image/vnd.microsoft.icon">
	<link rel="stylesheet" type="text/css" media="screen" href="http://s.bash.org.ru/screen.css?643545321542">
	<link rel="stylesheet" type="text/css" media="handheld" href="http://s.bash.org.ru/mobile.css">
	<link rel="alternate" title="Bash.org.ru RSS" href="http://bash.org.ru/rss/" type="application/rss+xml">
	<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
	<script src="http://s.bash.org.ru/mtools.js" language="JavaScript" type="text/javascript" charset="windows-1251"></script> 
</head>
<body>
<div id="navstrip"><b>[bash.org.ru]</b> [<a href="http://ithappens.ru">IT Happens</a>] [<a href="http://zadolba.li">zadolba.li</a>]<img src="http://o.hai.lolwut.ru/" width="0" height="0" style="visibility: hidden;"></div><div id="page">
	<div class="header"><a href="/"><img src="http://s.bash.org.ru/logo.gif" width="300" height="40" alt="bash.org.ru" /></a><p>bash.org.ru —*Цитатник Рунета</p></div>
	<div class="menu"><div class="menublock">
			цитаты: [<a href="/">последние</a>] [<a href="/random">случайные</a>] [<a href="/best">лучшие</a>] [<a href="/byrating">по рейтингу</a>] [<a href="/rss">RSS</a>] [<a href="http://twitter.com/b_o_r/" target="blank">Twitter</a>] <br>бездна: [<a href="/abyss">Бездна</a>] [<a href="/abysstop">топ Бездны</a>] [<a href="/abyssbest">лучшее Бездны</a>] [<a href="/add">добавить</a>] <br>что-то: [<a href="/comics">комикс</a>] [<a href="/faq">ЧаВО</a>] [<a href="http://maillist.ru/81859/" target="blank">рассылка</a>] [<a href="/webmaster">вебмастеру</a>] 
		</div>
				<div class="searchblock">
			введите текст или номер цитаты:
			<form action="/"><input type="text" name="text" value="" class="searchbox">
			<input type="submit" value="Найти" class="button"></form>
		</div>
		<br style="clear: both;">	</div>
	<div id="quotes">		 
	<div class="q">
		<div class="vote">
			<a href="/quote/77">77</a>
						[ <span id="v77">2259</span> ]
			<a href="/quote/77/rulez" onclick="v(77, 0, 0); return false;">смешно</a> /
			<a href="/quote/77/bayan" onclick="v(77, 2, 0); return false;">[:||||:]</a> /
			<a href="/quote/77/sux" onclick="v(77, 1, 0); return false;">не смешно</a> /
						утверждена 2004-08-31 в 09:32
					</div>
		<div>&lt;PPDV&gt; Слт, сделай мне whois <br />&lt;fox_&gt; только нежно! =) </div>
	</div>	 
	 
 
<div class="q"><div><center><iframe src="http://lol.bash.org.ru/_ad.php?zone=zone:3" allowtransparency="true" class="b600" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" name="ctf" id="ctf"></iframe></center></div></div><hr class="iq"><div class="q"><div><a href="/gogogo/30300" target="_blank">Новый магазин лицензионного контента Trava.ru: тысячи треков любимых исполнителей, хит-парад твоего настроения!</a><img src="http://ad.adriver.ru/cgi-bin/rle.cgi?sid=1&bt=21&ad=245605&pid=495577&bid=920467&bn=920467&rnd=437997164" width="0" height="0"></div></div> </div>
	<div class="menu">цитаты: [<a href="/">последние</a>] [<a href="/random">случайные</a>] [<a href="/best">лучшие</a>] [<a href="/byrating">по рейтингу</a>] [<a href="/rss">RSS</a>] [<a href="http://twitter.com/b_o_r/" target="blank">Twitter</a>] <br>бездна: [<a href="/abyss">Бездна</a>] [<a href="/abysstop">топ Бездны</a>] [<a href="/abyssbest">лучшее Бездны</a>] [<a href="/add">добавить</a>] <br>что-то: [<a href="/comics">комикс</a>] [<a href="/faq">ЧаВО</a>] [<a href="http://maillist.ru/81859/" target="blank">рассылка</a>] [<a href="/webmaster">вебмастеру</a>] </div>
	<hr><center class="badges"><!--Rating@Mail.ru LOGO--><a target=_top
href="http://top.mail.ru/jump?from=901403"><img
src="http://top.list.ru/counter?id=901403;t=49;l=1"
border=0 height=31 width=88
alt="Рейтинг@Mail.ru"/></a> <!--/LOGO--><!--LiveInternet logo--><a href="http://www.liveinternet.ru/click"
target=_blank><img src="http://counter.yadro.ru/logo?15.1" border=0
title="LiveInternet"
alt="" width=88 height=31></a><!--/LiveInternet-->
<a href="http://www.yandex.ru/cy?base=0&host=bash.org.ru"><img src="http://www.yandex.ru/cycounter?bash.org.ru" width="88" height="31" alt="Индекс Цитирования Яndex" border="0"></a>


<!--Openstat--><span id="openstat926575"></span><script type="text/javascript">
var openstat = { counter: 926575, image: 5041, next: openstat, track_links: "all" }; document.write(unescape("%3Cscript%20src=%22http" +
(("https:" == document.location.protocol) ? "s" : "") +
"://openstat.net/cnt.js%22%20defer=%22defer%22%3E%3C/script%3E"));
</script><!--/Openstat-->

</center>	<hr><small>Идея проекта &copy; bash.org.
	<br>Реализация и плюшки &copy; 2004—2011, команда bash.org.ru.
	<br><a href="http://lolwut.ru/bash.org.ru.html">Информация для рекламодателей</a>. По другим поводам: <a href="mailto:%20su%70por%74%40%62ash%2e%6f%72%67.r%75">support@bash.org.ru</a>.
	</small>
</div>
<!--Rating@Mail.ru COUNTER--><script language="JavaScript" type="text/javascript"><!--
d=document;var a='';a+=';r='+escape(d.referrer)
js=10//--></script><script language="JavaScript1.1" type="text/javascript"><!--
a+=';j='+navigator.javaEnabled()
js=11//--></script><script language="JavaScript1.2" type="text/javascript"><!--
s=screen;a+=';s='+s.width+'*'+s.height
a+=';d='+(s.colorDepth?s.colorDepth:s.pixelDepth)
js=12//--></script><script language="JavaScript1.3" type="text/javascript"><!--
js=13//--></script><script language="JavaScript" type="text/javascript"><!--
d.write('<img src="http://top.list.ru/counter'+
'?id=901403;js='+js+a+';rand='+Math.random()+
'" height=1 width=1/>')
if(11<js)d.write('<'+'!-- ')//--></script><noscript><img
src="http://top.list.ru/counter?js=na;id=901403"
height=1 width=1 alt=""/></noscript><script language="JavaScript" type="text/javascript"><!--
if(11<js)d.write('--'+'>')//--></script><!--/COUNTER-->
<!--LiveInternet counter--><script type="text/javascript"><!--
document.write("<img src='http://counter.yadro.ru/hit?r"+
escape(document.referrer)+((typeof(screen)=="undefined")?"":
";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?
screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+
";"+Math.random()+
"' width=1 height=1 alt=''>")//--></script><!--/LiveInternet--><script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-3271837-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

При этом я позволил себе сделать текст самой цитаты жирным можно получить этот текст посредством get-запроса на сайт. И используя элементарную функцию Pos найти это место

Код:
<div class="vote">
			<a href="/quote/77">77</a>
						[ <span id="v77">2259</span> ]
			<a href="/quote/77/rulez" onclick="v(77, 0, 0); return false;">смешно</a> /
			<a href="/quote/77/bayan" onclick="v(77, 2, 0); return false;">[:||||:]</a> /
			<a href="/quote/77/sux" onclick="v(77, 1, 0); return false;">не смешно</a> /
						утверждена 2004-08-31 в 09:32
					</div>
		<div>&lt;PPDV&gt; Слт, сделай мне whois <br />&lt;fox_&gt; только нежно! =) </div>
	</div>	 

или что-то вроде этого. Удалить все кроме

Код:
&lt;PPDV&gt; Слт, сделай мне whois <br />&lt;fox_&gt; только нежно! =)

Заменить <br /> на #13, а &lt; и &gt; на < и > соответственно. Ещё не помешалобы проверить на другие символы html, которые отображаются как &<что-то>;, и заменить это на нормальный символ.

После чего сделать
Код:
Memo1.Lines.Text:=quote; //где quote - переменная, хранящая цитату.
как-то так. Конечно, это все можно оптимизировать, но это уже можно сделать и самому.
Ответить с цитированием
  #20  
Старый 13.01.2011, 21:58
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Если посмотреть исходный код то цитата
Код:
...
<div>Цитата...</div>
...
заключена в тег <div></div>, причем он там встречается первый раз как раз на цитате, т.е. можно найти первый <div> и вытащить после него текст, потом найти </div> и убрать все, что после него.
Затем нужно правильно обработать внутренние теги типа <br>

в принципе выше написано все подробнее =)
Ответить с цитированием
  #21  
Старый 13.01.2011, 22:01
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
По умолчанию

Цитата:
Сообщение от Drozh
Если посмотреть исходный код то цитата
Код:
...
<div>Цитата...</div>
...
заключена в тег <div></div>, причем он там встречается первый раз как раз на цитате, т.е. можно найти первый <div> и вытащить после него текст, потом найти </div> и убрать все, что после него.
Затем нужно правильно обработать внутренние теги типа <br>

в принципе выше написано все подробнее =)


Там <div> дважды встречается.. хотя да, можно сначала найти первый и до него все стереть и после </div>, а за тем обзаботать внутренний <div> где уже сама цитата
Ответить с цитированием
  #22  
Старый 13.01.2011, 22:03
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Пользуй регулярные выражения и будет тебе счастье.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #23  
Старый 13.01.2011, 22:42
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от nex
Так как мне нужно не на сайт, а в прогу, то я вместо сайта вписал этот скрипт в Html документ. А хранится он на моём FTP. Если его просто открыть то получится просто цитата. Никакого "моего сайта" нет.
Вместо того чтоб обратится к
http://bash.org.ru/random
IP 174.122.62.84
Хост bash.org.ru
Код страны US
Страна United States
Код региона TX
Регион Texas
Город Houston

твоя прога усердно начала посылать запросы на
cc.crimson-land.ru -- TCP
к чему бы это?


http://www.google.ru/search?hl=ru&so...3%D0%BA+Google


Гггг)) еще одна мысль - знающие люди поймут:
Прога распостраняется и на чинает Досить определенные сайты)

Последний раз редактировалось Konrad, 13.01.2011 в 22:50.
Ответить с цитированием
  #24  
Старый 13.01.2011, 23:43
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
По умолчанию

Konrad похоже, это паранойя - в любой программе видеть вредоносное ПО
Ответить с цитированием
  #25  
Старый 14.01.2011, 00:37
nex nex вне форума
Прохожий
 
Регистрация: 12.01.2011
Сообщения: 10
Репутация: 10
По умолчанию

ПОЗДРАВЛЯЮ ВСЕХ СО СТАРЫМ НОВЫМ ГОДОМ!!!!!



Цитата:
твоя прога усердно начала посылать запросы на
cc.crimson-land.ru -- TCP
к чему бы это?

Ахахаах!!! А ты зайди на cc.crimson-land.ru да посмотри, что там я храню всякую всячину. Среди всего там есть и Файл bashorg.html Я же писал ранее ,что файл храню на своём FTP от своего же сайта crimson-land.ru. Хостинг то оплачен)) чё место терять)))


Цитата:
Гггг)) еще одна мысль - знающие люди поймут:
Прога распостраняется и на чинает Досить определенные сайты)

Это, как правильно написал ChinYan
Цитата:
Konrad похоже, это паранойя - в любой программе видеть вредоносное ПО
За что большое ему спасибо. если на то пошло Konrad то не скачивай мою прогу ,и не запускай, если ты так боишься...






Цитата:
И используя элементарную функцию Pos найти это место

А подскажите, каким кодом можно найти первый <div>? Я вот неврублюсь , как найти что то из кода страницы... Или где бы статейку почитать... Буду очень благодарен.

и... СПАСИБО Вам, за вашу помощь советами. Я вообще в дельфи мало что знаю...Вот, как видите, практикуюсь...учусь.

Последний раз редактировалось nex, 14.01.2011 в 00:51.
Ответить с цитированием
  #26  
Старый 14.01.2011, 02:17
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Вот тут хорошая статья по тому, что тебе нужно.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #27  
Старый 14.01.2011, 04:19
nex nex вне форума
Прохожий
 
Регистрация: 12.01.2011
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от DJ PhoeniX
Вот тут хорошая статья по тому, что тебе нужно.


Спасибо, Феникс!!!
Ответить с цитированием
  #28  
Старый 14.01.2011, 19:28
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Для выдирания нужного текста из другого текста используй регулярные выражения. На много облегчит тебе жизнь.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #29  
Старый 14.01.2011, 23:18
nex nex вне форума
Прохожий
 
Регистрация: 12.01.2011
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Для выдирания нужного текста из другого текста используй регулярные выражения. На много облегчит тебе жизнь.

Ты уже 2рой раз пишешь про это... А обьяснить можешь как и для чего это?
Ответить с цитированием
  #30  
Старый 14.01.2011, 23:31
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

http://ru.wikipedia.org/wiki/%D0%A0%...BD%D0%B8%D1%8F

Регулярные выражения помогут тебе спарсить сайт вот и все...
__________________
Помогаю за Спасибо
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:25.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter