Что нового

Вычисление выражения, полученого со страницы в браузере

-ZIG-ZAG-

Новичок
Сообщения
24
Репутация
1
Версия AutoIt: 3.3.6.1

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

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


Добавлено:
Сообщение автоматически объединено:

Текст вопросов в хтмл находится в конструкции вида:
<span class='taskquestion'>3-1=?</span> или наподобии такого <span class='taskquestion'>О каком серфинге идёт речь?</span>
 

Arei

Скриптер
Сообщения
938
Репутация
115
Код:
$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



Добавлено:
Сообщение автоматически объединено:

какого вида там уравнения, там есть / * и цифров сколько 1 или может быть 110?
 
Автор
Z

-ZIG-ZAG-

Новичок
Сообщения
24
Репутация
1
цифры от 1 до 9, операции только вычитания или суммирования.

изенил ваш код, теперь он находит в коде хтмл нужный мне фрагмент,
Код:
$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%
<input type='radio' name='adreply' value='150%' />150%
<input type='radio' name='adreply' value='300%' />300%
то есть тут варианты ответов на вопрос- 10%, второй вариант 150%, и третий 300%
как из хтмл получить эти 3 варианта ответов в переменные для дальнейшей работы с ними?
Собственные познания регулярных выражений и Аутоита пока на низком уровне
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
$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)

результаты
Код:
#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);или так все сразу
 
Автор
Z

-ZIG-ZAG-

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

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Привидите всю страницу html, если известно, раскажите какие алгебраические знаки могут быть в искомом выражении(-,+,* и тд).
 
Автор
Z

-ZIG-ZAG-

Новичок
Сообщения
24
Репутация
1
Код:
<!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>
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> 

<b>Открываю СЕКРЕТ одного из своих заработков в интернете!</b>

Я такой же человек как и Вы, зарабатываю на кликах и чтении  почты на различных проектах. 


Где-то месяц назад познакомился с необычным для меня заработком.

10$ в день для меня достаточно большой доход, тем более что затраты времени не более получаса!

<b>НА ДАННОМ САЙТЕ </b>я зарабатываю с помощью игры в рулетку, НО для себя высчитал <b>СХЕМУ</b>, которая в любом случае дает <b>выигрышный эффект</b> и сейчас поделюсь ею с вами:

1) <u>играю строго до 150% от внесенных средств</u>, после может быть либо большой выигрыш либо проигрыш (как повезет)

2) <u>ставки делаю на две дюжины либо на цвет </u>- строгий рассчет - никакой надежды на удачу


3) <u>после того как выиграю 10$ сразу вывожу деньги</u>, можно и дальше играть до +50+100$, но я стараюсь не привлекать особого внимания и останавливаюсь ровно на 10$.

 <b>ЗАПОМНИТЕ главное правило СЕКРЕТА моего заработка: </b>

<b><i>ОДИН РАЗ В ДЕНЬ НА РУЛЕТКЕ ГАРАНТИРОВАНО  150%  ВЫИГРЫШ от внесенных средств для каждого и по любой проверенной методике!!! </i></b>Дальше игра на удачу!

 Пользуясь этим правилом вывел уже 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%
<input type='radio' name='adreply' value='300%' />300%
<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>ЕЩЕ ЛУЧШЕ И НАДЕЖНЕЕ!
<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 руб.
<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 уровнями рефов!
<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!
<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% прибыли казино с привлеченных Вами игроков
<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

            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> &sdot; 
            <a href="/codex.php">Админкодекс</a> &sdot; 
            <a href="/black-links.php">Чёрный список</a> &sdot; 
            <a href="/userinfo.php">Пользователи</a> &sdot; 

            <a href="/forum/index.php">Форум</a> &sdot; 
            <a href="/contact.php">Контакты</a>
            

            Всего пользователей: <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 Гуру
Сообщения
1,010
Репутация
408
Код:
$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

попробуйте так
 
Автор
Z

-ZIG-ZAG-

Новичок
Сообщения
24
Репутация
1
Все-равно ничего не находит, :laugh:
Я то пытаюсь вот так искать текст на странице :

Код:
$we = _FFReadHTML()
$res=StringRegExp($we,"name='adreply' value='(.+?)'\s",3)
 
Автор
Z

-ZIG-ZAG-

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

-ZIG-ZAG-

Новичок
Сообщения
24
Репутация
1
в том что через переменную в которую помещается код страницы не находит,
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
В приведенной странице вроде нет выражения для вычисления.
А массив вопроса и ответов для нее можно получить примерно так :
Код:
$sPatern = "(?si)(?:'taskquestion'>|'adreply' value=.*?\s)(.*?=?.*?|\d*?%?)<"
$aResult = StringRegExp( $sText, $sPatern, 3 )
 
Автор
Z

-ZIG-ZAG-

Новичок
Сообщения
24
Репутация
1
Да, в приведенной странице нет выражения для вычисления, вычислить само выражение и получить результат удалось, остался нерешенным только вопрос с вариантами ответов.
Путем экспериментов выяснил интересный эффект- если запустить скрипт на странице, код которой я привел, то скрипт ничего не находит как и на других страницах того сайта(сайт 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%
<input name="adreply" value="300%" type="radio">300%
<input name="adreply" value="150%" type="radio">150%</div>

разница в кавычках, как составить регулярное выражение ?
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
-ZIG-ZAG- [?]
разница в кавычках, как составить регулярное выражение ?

Использовать в рег.выражениях вместо кавычек :
Код:
["']


Или выполнять предварительное:
Код:
$Var=StringReplace($Var,'"', "'")
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
-ZIG-ZAG-

{CodeWarn.SModer}
 
Автор
Z

-ZIG-ZAG-

Новичок
Сообщения
24
Репутация
1
Спасибо! получилось с заменой кавычек
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
-ZIG-ZAG-
оформи все остальные куски кода в тэг
 
Верх