Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[pytanie] Analizowanie wartości na stronie www


Rekomendowane odpowiedzi

Opublikowano

Witam.

Zacznę od tego, że nie wiem czy c++ to najlepszy język w którym można by to zrobić ale myślę że jest na tyle rozwinięty, że problemu nie będzie.

 

Tak więc wrócę do początku ;)

 

Chciał bym napisać program który będzie analizował w pewnej linijce strony www wartość, jeżeli wartość ta będzie np. >100 to kliknie klawisz.

 

W przeglądarce google chrome jest możliwość podejrzenia źródła strony i może analizowanie go będzie prostsze ? - (to tylko taka moja spekulacja)

 

Do tego miał bym skrypt w autoit który będzie odświeżał stronę klikając f5 co kilka s i skrypt który będzie klikał w wybrane miejsce, odpalany on będzie właśnie z poziomu programu analizującego.

Opublikowano

ok, jeśli tak to proszę o przeniesienie tematu do dział AutoIt, nie chcę niepotrzebnie tworzyć 2 tematu, ja go zedytuje.

 

@Edit

 

Jeśli ktoś może i umie proszę o pomoc ;)

Weteran
Opublikowano

Nie wiem, czy to dobry przykład, ale ja robię tak

$oIE = _IECreate("www.google.pl")
 $kod_strony = _IEBodyReadHTML($oIE) ; czyta stronę
 $aArray1 = _StringBetween($kod_strony, 'od', 'do') ;od jakiego miejsca do jakiego miejsca przeczytać

1329036830-U154499.png
Opublikowano

W c++ da się wszystko, ale 100x prościej i 10x mniej wydajnie będzie to zrobić w AutoIT :) A nie robimy jakiegoś super gigantycznego skryptu żeby przejmować się wydajnoscią. Tak więc polecam AutoIT.

 

hInet =  InternetOpen("HTTPGET", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
hConn = InternetConnect(hInet, "x", 80, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
hUrl = InternetOpenUrl(hInet, "x", NULL, 0,0, 0);
InternetReadFile(hUrl,cPob,500,&dwBytesRead);

wininet

i kilka str'ów do odzielenia tego syfu a potem jeden if, jeżeli chcesz to moge więcej podesłać

Opublikowano

Przyznam się, że dla mnie jest to "czarna magia" :D Wiem tyle o tym co o kiszeniu ogórków ;p Napisze może o co dokładnie mi chodzi.:

W grze do której to potrzebuję (streetcrime) jest rynek gdzie sprzedawane są kredyty (tak jak by 2 waluta w grze, tzn porównywalne do smoczych monet etc.) można je nabyć za sms, lub kupić własnie na tym rynku od innych graczy którzy zapłacili złotówki, owe kredyty są drogie, lecz zdarza się, że gracz wystawia te kredyty za cenę bardzo niską, na którą chciał bym polować. Zadaniem programu było by analizowanie linijki kodu w stronie (dokładnie cenę), a następnie jeżeli cena był aby mniejsza od wybranej przeze mnie to klikał by w wybrane miejsce (przycisk "kup"). Całe to zamieszanie po to, aby sprzedać następnie kupione kredyty za okazyjną cenę po cenie rynkowej, lub zatrzymać je dla siebie i kupić premiowane dobra w grze ;)

Weteran
Opublikowano

Czyli mój sposób jest najłatwiejszy..

Tutaj przykład, nie jestem pewny w 100%, czy działa, bo co do komend z IE to jeszcze zielony jestem troszku ;d

 

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <IE.au3>
#include <String.au3>
#include <Array.au3>
HotKeySet("{End}","wyjdz")
$GUI = GUICreate("BOT", 301, 110, 192, 114)
$go = GUICtrlCreateButton("Szukaj", 57, 72, 175, 34)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
$OIE = _IECreate("linkdostrony")
_IELoadWait($OIE)
ToolTip("Załadowany",0,0,"STATUS")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
 Case $GUI_EVENT_CLOSE
  Exit
 Case $go
start()
EndSwitch
WEnd
func start()
While 1
 Sleep(100)
$kod_strony = _IEBodyReadHTML($OIE)
$lol = _StringBetween($kod_strony, '<LI><SPAN class=row_title>Czas Online</SPAN><SPAN class=row_data>', '</SPAN></LI>') ; Tutaj musisz z kody strony wybrać tą czesc gdzie masz cene tych kredytow
If $lol = 100 Then
MouseClick("",100,100)
EndIf
WEnd
EndFunc

Func wyjdz()
 Exit
 EndFunc

1329036830-U154499.png
Opublikowano

Zrobiłem tak:

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <IE.au3>
#include <String.au3>
#include <Array.au3>
HotKeySet("{End}","wyjdz")
$GUI = GUICreate("BOT", 301, 110, 192, 114)
$go = GUICtrlCreateButton("Szukaj", 57, 72, 175, 34)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
$OIE = _IECreate("http://streetcrime.pl/market/view/200")
_IELoadWait($OIE)
ToolTip("Załadowany",0,0,"STATUS")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
 Case $GUI_EVENT_CLOSE
  Exit
 Case $go
start()
EndSwitch
WEnd
func start()
While 1
  sleep(2500)
  Send("{f5}")
 Sleep(100)
$kod_strony = _IEBodyReadHTML($OIE)
$lol = _StringBetween($kod_strony, '<span class="cash">690 000', '</SPAN>')
If $lol >= 770000 Then
MouseClick("Left",970, 332)
EndIf
WEnd
EndFunc
Func wyjdz()
 Exit
 EndFunc

No i nie działa ;/

Opublikowano
$lol = _StringBetween($kod_strony, '<span class="cash">690 000', '</SPAN>')

to napewno masz dobrze?

nie powinno być tak?

$lol = _StringBetween($kod_strony, '<span class="cash">', '</SPAN>')

Weteran
Opublikowano

Najpierw może wrzuć msgbox'a i sprawdź, jaką wartość ci zwraca to

$lol = _StringBetween($kod_strony, '<span class="cash">', '</SPAN>')

 

Bo pewnie źle podałeś.

1329036830-U154499.png
Opublikowano

Ja mam ten sam problem...

 

tutaj mam kawalek strony

<div id="militaryScrollable">
  <div id="unitimg_21" class="singleUnit">
   <img src="images/units/small/mex_1.gif" alt="Poncho" title="" />
   <div class="count">10</div>
   </div>

 

I chce zeby program mi zwracał tą liczbę dziesięć po czym klikal w obrazek. moj kod wyglada tak:

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#include <String.au3>
#include <Array.au3>
local $Login,$haslo ;deklaracja zmiennych
Opt ("GuiOnEventMode", 1)
$formatka = GUICreate("IE TuT", 169, 43, 192, 124)
$start = GUICtrlCreateButton("Start", 8, 8, 75, 25)
$exitprog = GUICtrlCreateButton("Wyjdź", 88, 8, 75, 25)
GUISetOnEvent ($GUI_EVENT_CLOSE, "end")
GUICtrlSetOnEvent ($exitprog, "end")
GUICtrlSetOnEvent ($start, "main")
GUISetState(@SW_SHOW)
Func main()
$oIE = _IECreate("http://s15.wildguns.pl/index.php") ;otwieramy internet explorer z adresem plemiona.pl
$Login = _IEGetObjByName($oIE, "login_name") ;;pobieramy nazwę pola do loginu
Local $hwnd = _IEPropertyGet($oIE, "hwnd") ;;pobieramy pole do  uchwytu okna przeglądarki
_IEAction($Login, "focus") ;aktywacja pola login
ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "Tu był nick") ; wysłanie textu
$haslo = _IEGetObjByName($oIE, "login_pw") ;;pobieramy nazwę pola do hasła
_IEAction($haslo, "focus") ;aktywacja pola z haslem
ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "A ty pass") ; wysłanie textu
$loguj = _IEGetObjByName($oIE,"login_submit")
_IEAction($haslo, "click")
ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{ENTER}") ; wysłanie textu
_IELoadWait($oIE)
;Dotąd wszystko działa

$kod_strony = _IEBodyReadHTML($OIE)
$lol = _StringBetween($kod_strony, '<div class="count">', '</div>') ; Tutaj musisz z kody strony wybrać tą czesc gdzie masz cene tych kredytow
If $lol >= 1 then
MsgBox(16, "mam wojo ", $lol)
;$OIE = _IECreate("http://s15.wildguns.pl/lightbox_content/lb_main.php?action=attack&target=38784")
;_IELoadWait($OIE)
Else
MsgBox(0, "Nie masz wojska",  $lol )
EndIf

EndFunc
Func end()
	 Exit
EndFunc
WEnd

 

 

zawsze zwraca mi 0 i nie moge tego ominać...

 

To ma byc posty bocik do gry na przegladarke.

 

Pozdrawiam Krzysiek

Opublikowano

wrzuciłem msbox'a i zwraca 0 ;/

linijkę z kodem powiększyłem o tabele

$lol = _StringBetween($kod_strony, '<td class="r"><span class="cash">', '</span></td>')

Jeśli chodzi o logowanie, to naturalne chyba, że wcześniej się zalogowałem ;)

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...