Русское сообщество AutoIt

  • Май 21, 2013, 17:01:20 *
  • Добро пожаловать, Гость
Пожалуйста, войдите или зарегистрируйтесь.

Войти
Расширенный поиск  

Новости:


Последняя финальная версия AutoIt: 3.3.8.1 (Скачать)
Последняя Beta версия AutoIt: 3.3.9.4 (Скачать)

Реклама

Автор Тема: Вычисление выражения, полученого со страницы в браузере  (Прочитано 2535 раз)

0 Пользователей и 1 Гость смотрят эту тему.

-ZIG-ZAG- [?]

Версия AutoIt: 3.3.6.1

Доброго времени суток!
Интересует такой вопрос- Как взять со страницы выражение типа такого "3-1=?", и посчитать его ?
Место на странице фиксированно, но только вот в этом месте может возникнуть и текствый вопрос, надо как-то определять что именно алгебраический вопрос.

Заранее благодарен откликнувшимся на вопрос


Добавлено: Декабрь 11, 2011, 19:43:42
Текст вопросов в хтмл находится в конструкции вида:
<span class='taskquestion'>3-1=?</span> или наподобии такого <span class='taskquestion'>О каком серфинге идёт речь?</span>
« Последнее редактирование: Декабрь 11, 2011, 19:43:42 от -ZIG-ZAG-, Причина: Объединение сообщений »



  Записан

Arei [?]

  • Скриптер
  • ****
  • Репутация: 113
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 929
  • Награды Второе место конкурса
    • Награды
Код: AutoIt [Выделить]
$we="<span class='taskquestion'>3-1=?</span> или наподобии такого <span class='taskquestion'>О каком серфинге идёт речь?</span>"







$start = "'>"
$end = '?</'
$source = StringFindSE($we,$start,$end,1)
$var = Stringleft($source, 1)
$var=StringIsDigit($var)

MsgBox(0, "Выражение", $source)

if $var = 1 Then
    MsgBox("","","Алгебр.выражение")
else
    MsgBox("","","Текст. выражение")
    Endif


Func StringFindSE($string,$start="",$end="",$start_occ=1,$end_occ=1,$cas=0)
    Local $source_start,$source_count,$source
    If $start <> '' Then
        Local $st_count
        $st_count = StringSplit($start,'')
        $source_start = StringInStr($string,$start,$cas,$start_occ) + $st_count[0]
    Else
        $source_start = 1
    EndIf
    If $end <> '' Then
        $source_count = StringInStr($string,$end,$cas,$end_occ,$source_start) - $source_start
    Else
        $source_count = -1
    EndIf
    Return StringMid ($string,$source_start,$source_count)
EndFunc


Добавлено: Декабрь 11, 2011, 20:02:21
какого вида там уравнения, там есть / * и цифров сколько 1 или может быть 110?




  Записан

-ZIG-ZAG- [?]

цифры от 1 до 9, операции только вычитания или суммирования.
 
изенил ваш код, теперь он находит в коде хтмл нужный мне фрагмент,
Код: AutoIt [Выделить]
$we = _FFReadHTML()
$start = "taskquestion"
$end = '=<'
$source = StringFindSE($we,$start,$end,1)
$var = Stringleft($source, 1)
$var=StringIsDigit($var)

$w=StringLeft($source,StringLen($source)-2)
MsgBox(0, "Выражение", $w)
$d=StringSplit ($w,"-")

if @error then
    $d=StringSplit ($w,"+")
    $rez=$d[1]+$d[2]
   
else
    $rez=$d[1]-$d[2]
    endif
    MsgBox(0, "Выражение", $rez)

if $var = 1 Then
    MsgBox("","","Алгебр.выражение")
else
    MsgBox("","","Текст. выражение")
    Endif


Func StringFindSE($string,$start="",$end="",$start_occ=1,$end_occ=1,$cas=0)
    Local $source_start,$source_count,$source
    If $start <> '' Then
        Local $st_count
        $st_count = StringSplit($start,'')
        $source_start = StringInStr($string,$start,$cas,$start_occ) + $st_count[0]
    Else
        $source_start = 1
    EndIf
    If $end <> '' Then
        $source_count = StringInStr($string,$end,$cas,$end_occ,$source_start) - $source_start
    Else
        $source_count = -1
    EndIf
    Return StringMid ($string,$source_start+2,$source_count)
EndFunc
теперь у меня в переменной $w строка "2+3"
и в переменной $rez результат выражения


Почти сразу за заданием идут варианты ответов в хтмл <input type='radio' name='adreply' value='10%' />10%<br /><input type='radio' name='adreply' value='150%' />150%<br /><input type='radio' name='adreply' value='300%' />300%то есть тут варианты ответов на вопрос- 10%, второй вариант 150%, и третий 300%
как из хтмл получить эти 3 варианта ответов в переменные для дальнейшей работы с ними?
Собственные познания регулярных выражений и Аутоита пока на низком уровне
« Последнее редактирование: Декабрь 12, 2011, 16:22:24 от -ZIG-ZAG- »



  Записан

sngr [?]

  • AutoIt Гуру
  • *****
  • Репутация: 246
  • Online Online
  • Сообщений: 591
  • Версия AutoIt: 3.3.8.1
    • Награды
Код: AutoIt [Выделить]
$str='2+3'
$zn=StringRegExp($str,'\d+(.*)\d+',3)
$res=StringSplit($str,$zn[0])
$q=Asc($zn[0])
MsgBox(0,'',$res[1])
MsgBox(0,'',$res[2])
If $q=43 Then
$itog=$res[1]+$res[2]
Else
If $q=45 Then $itog=$res[1]-$res[2]
EndIf
MsgBox(0,'',$itog)
 
результаты
Код: AutoIt [Выделить]
#include 'array.au3'
$txt=FileRead(@ScriptDir & '\noname.txt')
$res=StringRegExp($txt,"value='(.*)'\s",3)
MsgBox(0,'',$res[0])
MsgBox(0,'',$res[1])
MsgBox(0,'',$res[2])
_ArrayDisplay($res);или так все сразу
« Последнее редактирование: Декабрь 12, 2011, 04:59:18 от sngr »



  Записан

-ZIG-ZAG- [?]

sngr ваш вариант с вычислением намного лучше )) буду разбирать его и изучать
А вот с получением ответов не получается, к фразе "value=" привязаться не получилось, на странице много элементов с параметром "value="
Уникальным для вариантов ответов является фраза "adreply", надо как-то с помощью ее получать значения..
Получилось самому добиться результатов, но так же топорно и в лоб, хотелось бы посмотреть на правльный вариант решения




  Записан

sngr [?]

  • AutoIt Гуру
  • *****
  • Репутация: 246
  • Online Online
  • Сообщений: 591
  • Версия AutoIt: 3.3.8.1
    • Награды
Привидите всю страницу html, если известно, раскажите какие алгебраические знаки могут быть в искомом выражении(-,+,* и тд).




  Записан

-ZIG-ZAG- [?]




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>SEO sprint.net</title>
        <meta name="keywords" content="реклама,продвижение,раскрутка,оптимизация,сео,серфинг,тесты,опросы,задания" />
        <meta name="title" content="SEO sprint" />

        <meta name="copyright" content="SEOSPRINT" />
        <link rel="stylesheet" href="/css/main.css" type="text/css" />
        <script type="text/javascript" src="/js/jquery.min.js"></script>
        <script type="text/javascript" src="/js/js-4058770600.js"></script>
        <script type="text/javascript" src="/js/js-4258860246.js"></script>
    </head>
    <body>

        <div id="main">
            <table class='siteheader'><tr><td><a class='logo-winter' href='/index.php' title='SEOSPRINT - Всё для максимальной раскрутки!'></a></td><td align='right' valign='bottom' nowrap='nowrap'><div id='cartvisible'></div></td><td align='left' valign='bottom' nowrap='nowrap' width='150'><div class='nameblock'><span class='nbtitle'>Добро пожаловать</span>Имя: <b>Ыячеслав</b><br />ID: 568382, Статус: <a style='color: #C08B06' href='/addphone.php'>Активировать аккаунт</a></div></td><td align='right' valign='bottom' width='90' nowrap='nowrap'><a href='/userinfo.php?user=568382' style='border: none;'><img class='avatar' src='/images/def-avatar.jpg' border='0' width='60' height='60' alt='avatar' /></a></td></tr><tr><td colspan='3'><ul class='mainmenu'><li><a href='/index.php' class='active'>Главная</a></li><li><a href='/news.php'>Новости</a></li><li><a href='/tos.php'>Правила</a></li><li><a href='/profit.php'>Выплаты</a></li><li><a href='/fair.php'>Ярмарка</a></li><li><a href='/forum/index.php'>Форум</a></li><li><a href='/wiki.php'>Помощь</a></li></ul></td><td valign='top'><a class='logout' href='/logout.php' title='Выход'></a></td></tr></table>            <table class="site">

                <tr>
                    <td class="fblock">
                        <span class='sbtitle'>Меню пользователя</span><div class='usermenu'><span id='mnu_title1' class='usermnutitle-g'>Зарабатывать</span><div id='mnu_tblock1' class='usermnublock'><span class='usermnudelim'></span><a class='usermnuline' href='/work-serf.php'>Серфинг сайтов</a><a class='usermnuline-act' href='/work-mail.php'>Чтение писем</a><a class='usermnuline' href='/work-test.php'>Прохождение тестов</a><a class='usermnuline' href='/work-task.php'>Выполнение заданий</a><span class='usermnudelim'></span></div><span id='mnu_title2' class='usermnutitle-r'>Разместить рекламу</span><div id='mnu_tblock2' class='usermnublock' style='display: none;'><span class='usermnudelim'></span><a class='usermnuline' href='/advertise-serf.php'>Реклама в серфинге</a><a class='usermnuline' href='/advertise-mail.php'>Оплачиваемые письма</a><a class='usermnuline' href='/advertise-test.php'>Оплачиваемые тесты</a><a class='usermnuline' href='/advertise-task.php'>Оплачиваемые задания</a><a class='usermnuline' href='/advertise-context.php'>Контекстная реклама</a><a class='usermnuline' href='/advertise-baner.php'>Баннер</a><span class='usermnudelim'></span></div><span id='mnu_title3' class='usermnutitle-b'>Личный кабинет</span><div id='mnu_tblock3' class='usermnublock'><span class='usermnudelim'></span><a class='usermnuline' href='/advmanager.php'>Управление рекламой<span class='usermnuline-none'></span></a><a class='usermnuline' href='/mails.php'>Моя почта<span class='usermnuline-mail'>0</span></a><a class='usermnuline' href='/refs.php'>Мои рефералы<span class='usermnuline-ref'>0</span></a><a class='usermnuline' href='/promo.php'>Пригласить рефералов</a><a class='usermnuline' href='/refwelcome.php'>Приветствие и авторефбек</a><a class='usermnuline' href='/stat.php'>Моя статистика</a><a class='usermnuline' href='/history.php'>История операций</a><a class='usermnuline' href='/profile.php'>Мои личные данные</a><a class='usermnuline' href='/withdraw.php'><b>Получить деньги</b></a><span class='usermnudelim'></span></div></div><span class='sbtitle'>Мой баланс</span><div class='balance-block' title='Баланс пользователя'>2.54 <span class='text12'>руб</span></div>                    </td>

                    <td class="contentmain">
                        <h1>Здесь зарабатывают на чтении писем</h1>
                                                Внимательно прочитайте письмо рекламодателя. Часто в них можно найти нечто совер&#xAD;шен&#xAD;но новое для себя. Однако не все письма одинаково правдивы и полезны. Письмо будет засчитано, когда вы правильно ответите на контрольный вопрос внизу и просмотрите сайт.
                        <div class='tskblank4'><div class='tskblank3'><div class='tskblank2'><div class='tskblank1'><span class='tskblank-title'>№ 2163: &laquo;Секрет&raquo;</span><div class='tskblock'><span class='taskdescription'><b>ВНИМАНИЕ!!!</b> <br />
<b>Открываю СЕКРЕТ одного из своих заработков в интернете!</b><br />
Я такой же человек как и Вы, зарабатываю на кликах и чтении  почты на различных проектах. <br />

Где-то месяц назад познакомился с необычным для меня заработком.<br />
10$ в день для меня достаточно большой доход, тем более что затраты времени не более получаса!<br />
<b>НА ДАННОМ САЙТЕ </b>я зарабатываю с помощью игры в рулетку, НО для себя высчитал <b>СХЕМУ</b>, которая в любом случае дает <b>выигрышный эффект</b> и сейчас поделюсь ею с вами:<br />
1) <u>играю строго до 150% от внесенных средств</u>, после может быть либо большой выигрыш либо проигрыш (как повезет)<br />
2) <u>ставки делаю на две дюжины либо на цвет </u>- строгий рассчет - никакой надежды на удачу<br />

3) <u>после того как выиграю 10$ сразу вывожу деньги</u>, можно и дальше играть до +50+100$, но я стараюсь не привлекать особого внимания и останавливаюсь ровно на 10$.<br />
 <b>ЗАПОМНИТЕ главное правило СЕКРЕТА моего заработка: </b><br />
<b><i>ОДИН РАЗ В ДЕНЬ НА РУЛЕТКЕ ГАРАНТИРОВАНО  150%  ВЫИГРЫШ от внесенных средств для каждого и по любой проверенной методике!!! </i></b>Дальше игра на удачу!<br />
 Пользуясь этим правилом вывел уже 300$ !!!</span><span class='task-subtitle'>Ответьте, пожалуйста, на контрольный вопрос:</span><span class='taskquestion'>Гарантированный выигрыш</span><form name='goform' method='post' action='/gomail.php'><input type='hidden' name='adcontrol' value='02057746fd6548582420421a28e2df64' /><input type='hidden' name='adv' value='2163' /><div class='blockreply'><input type='radio' name='adreply' value='10%' />10%<br /><input type='radio' name='adreply' value='300%' />300%<br /><input type='radio' name='adreply' value='150%' />150%</div></form><div id='entermsg'></div><center><span class='button-green-big' title='Переход на сайт: http://member.vezun27.com/?736786' onclick='senddata(document);'>Перейти на сайт</span></center></div></div></div></div></div>                    </td>

                    <td class="fblock">
                        <span class='sbtitle'>Контекстная реклама</span><div class='contextlink'><a href='/gocontext.php?link=6434' target='_blank' title='68 переходов'>Обновленный IncraseBux<span>ЕЩЕ ЛУЧШЕ И НАДЕЖНЕЕ!<br /><span class='urlcontext'>http://incrasebux.com/index.ph&hellip;</span></span></a></div><div class='contextlink'><a href='/gocontext.php?link=2303' target='_blank' title='513 переходов'>Заработок на StreamWM.ru<span>Сёрф, автосёрф, клики, задания. Минималка 3 руб.<br /><span class='urlcontext'>http://streamwm.ru/?r=11934</span></span></a></div><div class='contextlink'><a href='/gocontext.php?link=2304' target='_blank' title='274 переходов'>Система заработка StreamWM<span>Зарабатываем на сёрфе, кликах и заданиях с 3 уровнями рефов!<br /><span class='urlcontext'>http://streamwm.ru/?r=11934</span></span></a></div><div class='contextlink'><a href='/gocontext.php?link=5826' target='_blank' title='26 переходов'>WFT™ SoftMakers<span>Программирование на заказ от WFT!<br /><span class='urlcontext'>http://www.wefriendstoo.net/</span></span></a></div><div class='contextlink'><a href='/gocontext.php?link=2322' target='_blank' title='159 переходов'>Предлагаем стать партнером<span>Вы получаете 15% прибыли казино с привлеченных Вами игроков<br /><span class='urlcontext'>http://www.goldcasino-slots.co&hellip;</span></span></a></div><span class="sbtitle">Наши здесь</span>

<table class="soc-table">
    <tr>
        <td><a class="soc-twitter" target='_blank' href="http://twitter.com/#!/seo_sprint"></a></td>
        <td><a class="soc-vk" target='_blank' href="http://vkontakte.ru/company_seosprint"></a></td>
        <td><a class="soc-fbook" target='_blank' href="http://www.facebook.com/pages/SEO-sprint/185661371507529"></a></td>
        <td><a class="soc-tube" target='_blank' href="http://www.youtube.com/user/gisinfo"></a></td>
    </tr>
</table>                    </td>
                </tr>

            </table>
            <div class="empty"></div>
        </div>
        <div id="footer">
    <div id="wrap">
        <div class="copyrate">
            SEO sprint 2011<br />
            All rights reserved
        </div>

        <a href='http://www.megastock.ru/' target='_blank' style='margin-left: 20px; border: none;'><img src='/images/88x31_wm_blue_on_white_ru.png' alt='www.megastock.ru' /></a>
        <a href='https://passport.webmoney.ru/asp/certview.asp?wmid=293160119471' target='_blank' style='margin-left: 2px; border: none;'><img src='/images/88x31_wm_v_blue_on_white_ru.png' alt='Здесь находится аттестат нашего WM идентификатора 293160119471' /></a>

        <div class="footermenu">
            <a href="/policy.php">Услуги и порядок оплаты</a>&nbsp;&sdot;&nbsp;
            <a href="/codex.php">Админкодекс</a>&nbsp;&sdot;&nbsp;
            <a href="/black-links.php">Чёрный список</a>&nbsp;&sdot;&nbsp;
            <a href="/userinfo.php">Пользователи</a>&nbsp;&sdot;&nbsp;

            <a href="/forum/index.php">Форум</a>&nbsp;&sdot;&nbsp;
            <a href="/contact.php">Контакты</a>
            <br />
            Всего пользователей: <font color='#114C5B'>374 479</font> &hellip; Новых за 24 часа: <font color='#114C5B'>2235</font> &hellip; Всего выплачено: <font color='#114C5B'>6 442 188.60</font> руб        </div>

    </div>
</div>

<script>var _wau = _wau || []; _wau.push(["tab", "agsmdloprpyx", "ikf", "right-lower"]);(function() { var s=document.createElement("script"); s.async=true; s.src="http://widgets.amung.us/tab.js";document.getElementsByTagName("head")[0].appendChild(s);})();</script>    </body>
</html>

С выражениями все решено, осталось только получить в переменные варианты ответов




  Записан

sngr [?]

  • AutoIt Гуру
  • *****
  • Репутация: 246
  • Online Online
  • Сообщений: 591
  • Версия AutoIt: 3.3.8.1
    • Награды
Код: AutoIt [Выделить]
$url=''; здесь адрес сайта
$txt=BinaryToString(InetRead($url))
$res=StringRegExp($txt,"name='adreply' value='(.+?)'\s",3)
For $i=0 To UBound($res)-1
    MsgBox(0,'',$res[$i])
Next
 
попробуйте так
« Последнее редактирование: Декабрь 12, 2011, 06:14:25 от sngr »



  Записан

-ZIG-ZAG- [?]

Все-равно ничего не находит,  :laugh:
Я то пытаюсь вот так искать текст на странице :

$we = _FFReadHTML()
$res=StringRegExp($we,"name='adreply' value='(.+?)'\s",3)
« Последнее редактирование: Декабрь 12, 2011, 16:24:24 от -ZIG-ZAG- »



  Записан

sngr [?]

  • AutoIt Гуру
  • *****
  • Репутация: 246
  • Online Online
  • Сообщений: 591
  • Версия AutoIt: 3.3.8.1
    • Награды
Что такое _FFReadHTML()?




  Записан

-ZIG-ZAG- [?]

в переменную $we помещается хтмл код страницы.
Проверял просто в переменную записывал нужный участок кода, regexp правильно находит ответы
такое впечатление, что в переменной не весь текст, может разрядности не хватает весь текст поместить?




  Записан

sngr [?]

  • AutoIt Гуру
  • *****
  • Репутация: 246
  • Online Online
  • Сообщений: 591
  • Версия AutoIt: 3.3.8.1
    • Награды
Так в чём сейчас проблема?




  Записан

-ZIG-ZAG- [?]

 в том что через переменную в которую помещается код страницы не находит,
« Последнее редактирование: Декабрь 12, 2011, 06:35:47 от -ZIG-ZAG- »



  Записан

gregaz [?]

  • AutoIt Гуру
  • *****
  • Репутация: 283
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 1091
  • Версия AutoIt: 3.3.8.1
    • Награды
В приведенной странице вроде нет выражения для вычисления.
А массив вопроса и ответов для нее можно получить примерно так :
Код: AutoIt [Выделить]
$sPatern = "(?si)(?:'taskquestion'>|'adreply' value=.*?\s)(.*?=?.*?|\d*?%?)<"
$aResult = StringRegExp( $sText, $sPatern, 3 )
 
« Последнее редактирование: Декабрь 12, 2011, 06:38:29 от gregaz »



  Записан
Самая большая проблема – её сформулировать. 

-ZIG-ZAG- [?]

Да, в приведенной странице нет выражения для вычисления, вычислить само выражение и получить результат удалось, остался нерешенным только вопрос с вариантами ответов.
Путем экспериментов выяснил интересный эффект- если запустить скрипт на странице, код которой я привел, то скрипт ничего не находит как и на других страницах того сайта(сайт seosprint.net), но если запустить мой скрипт на этой странице, он находит мне мои варианты ответов из приведеного мною тут кода страницы. :blink:

вот так выглядит участок кода в исходном коде <input type='radio' name='adreply' value='10%' />10%
<input type='radio' name='adreply' value='150%' />150%
<input type='radio' name='adreply' value='300%' />300%

а вот так  в переменной
<input name="adreply" value="10%" type="radio">10%<br><input name="adreply" value="300%" type="radio">300%<br><input name="adreply" value="150%" type="radio">150%</div>
разница в кавычках, как составить регулярное выражение ?
« Последнее редактирование: Декабрь 12, 2011, 16:23:50 от -ZIG-ZAG- »



  Записан
 


Похожие темы
Тема Автор Ответов Просмотров Последний ответ
Состояние загрузки страницы в браузере
AutoIt для новичков
Saken 14 3211 Последний ответ Ноябрь 27, 2009, 15:52:35
от CreatoR
AutoIt 3.3.6.0 - тормозят регулярные выражения
Регулярные выражения и прочее
Suppir 11 3082 Последний ответ Апрель 01, 2010, 17:48:18
от Suppir
[Данные, строки] Вычисление относительного пути файла
AutoIt для новичков
lognik 5 1688 Последний ответ Май 08, 2010, 16:39:15
от lognik
Регулярные выражения - освоение
Регулярные выражения и прочее
aranea 12 2477 Последний ответ Ноябрь 11, 2010, 21:50:18
от dwerf
Полезные регулярные выражения для SciTE
Инструменты и справка по AutoIt
CreatoR 9 4866 Последний ответ Январь 23, 2012, 13:21:22
от CreatoR
[Математика] вычисление интегралов
AutoIt для новичков
Arei 12 2031 Последний ответ Ноябрь 20, 2010, 04:59:52
от Kaster
Регулярные выражения: Как убрать все что вне круглых скобок?
Регулярные выражения и прочее
Kalisnik 2 2059 Последний ответ Февраль 11, 2011, 20:26:34
от CreatoR
 Закреплено  Частоиспользуемые выражения / шаблоны
Регулярные выражения и прочее
CreatoR 0 5298 Последний ответ Февраль 13, 2011, 00:16:11
от CreatoR
Перенесено: Полезные регулярные выражения для SciTE
Общение
CreatoR 0 912 Последний ответ Апрель 02, 2011, 14:23:51
от CreatoR
[Математика] Вычисление корня кубического из отрицательного числа
AutoIt для новичков
snoitaleR 4 1474 Последний ответ Апрель 16, 2012, 16:01:57
от Kaster


Реклама


* Пользователи онлайн
  • Dot Гостей: 147
  • Dot Скрыт: 1
  • Dot Пользователей: 26
  • Dot Пользователи Online: