Skocz do zawartości

[C++] Szukanie tekstu na stronie, zmienna?


ziomekkk

Polecane posty

Witam, chciałbym w dev c++ na windows pobrać stronę, a konkretnie odczytać ją co jest napisane w niej. prosta szybka funkcja umiał by ktoś napisać coś takiego ?

 

Tu coś jest ale nie działa pod winde bo chce za pomocą funkcji znaleźć w danym pliku na stronie dany wyraz.

http://www.cplusplus.com/forum/windows/18415/

 

poprzedni temat został usunięty pewnie chodziło o tagi są już jeszcze jeszcze czegoś brak proszę o info w temacie poprawie.

Link do komentarza
Udostępnij na innych stronach

Witam, chciałbym w dev c++ na windows pobrać stronę, a konkretnie odczytać ją co jest napisane w niej. prosta szybka funkcja umiał by ktoś napisać coś takiego ?

 

Tu coś jest ale nie działa pod winde bo chce za pomocą funkcji znaleźć w danym pliku na stronie dany wyraz.

http://www.cplusplus.com/forum/windows/18415/

 

poprzedni temat został usunięty pewnie chodziło o tagi są już jeszcze jeszcze czegoś brak proszę o info w temacie poprawie.

Mam rozwiązanie działające pod wieloma systemami, ale w innym języku. Potrzebujesz tą stronę pobrać w konkretnym celu (tzn. pobieranie strony to główna część progsa), czy potrzebujesz pobrać stronę jako dodatek do większego projektu, lub na zaliczenie itp.?

Link do komentarza
Udostępnij na innych stronach

Mam rozwiązanie działające pod wieloma systemami, ale w innym języku. Potrzebujesz tą stronę pobrać w konkretnym celu (tzn. pobieranie strony to główna część progsa), czy potrzebujesz pobrać stronę jako dodatek do większego projektu, lub na zaliczenie itp.?

 

@Jason

Dałem mu wcześniej rozwiązanie >>TU

 

@Topic

Będzie to działać tylko pod windowsa czyli tak jak chcesz. Wywołanie to:

 

Wywołanie:

UrlDownloadToFile(nil,'http://d.g3.pl/at/archiwa/at24.exe','C:\Dokumenty\Prenumeraty\@t24.exe',0,nil);

 

A jeżeli potrzebujesz danych o tej funkcji to google translator i masz mój link przetłumaczony ew mogę tłumaczeniem z delphi służyć które jest >>TU

Link do komentarza
Udostępnij na innych stronach

CYTAT(Stelma @ nie, 01 maj 2011 - 02:46) <{POST_SNAPBACK}>

@Jason

Dałem mu wcześniej rozwiązanie >>TU<<. Po pobraniu strony do pliku (co przecież robi ta funkcja) poprostu może sobie przeszukać zawartość pliku i zwrócić czy znalazło czy nie.

 

@Topic

Będzie to działać tylko pod windowsa czyli tak jak chcesz. Wywołanie to:

 

Wywołanie:

UrlDownloadToFile(nil,'http://d.g3.pl/at/archiwa/at24.exe','C:\Dokumenty\Prenumeraty\@t24.exe',0,nil);

 

A jeżeli potrzebujesz danych o tej funkcji to google translator i masz mój link przetłumaczony ew mogę tłumaczeniem z delphi służyć które jest >>TU<<. ofc zawsze masz pakiety indy, sockety, czy WebBrowsera który jest jako komponent w Borland C++ Bulider (Dev nigdy nie pisałem w C++ pod okienka więc nie wiem czy istnieją tam coś co się nazywa komponentami).

 

 

 

po prostu chciał bym sprawdzić co jest na stronie bez pobierania pliku na serwer tekst to 1 linia i sa ta cyfry, możecie mi dać przykłady bo kurde jestem ciemny, :D

 

 

bool sprawdz(int result){

 

 

 

CURL * curl;

CURLcode res;

curl = curl_easy_init();

 

if( curl ) {

result = curl_easy_setopt( curl, CURLOPT_URL, "http://linkstrony.pl/cos.php" );

curl_easy_perform( curl );

curl_easy_cleanup( curl );

return result;

}

 

 

to zwraca mi do konsoli co jest w pliki, a jak to później pobrac do zmiennej ?

 

no albo ten 1 sposób wasz. dzięki za zainteresowanie.

Link do komentarza
Udostępnij na innych stronach

po prostu chciał bym sprawdzić co jest na stronie bez pobierania pliku na serwer tekst to 1 linia i sa ta cyfry, możecie mi dać przykłady bo kurde jestem ciemny, :D

Python 2.6

KODimport urllib2

url="http://adres_strony.pl"

tekst_ze_strony = urllib2.urlopen(url).read(100000) # parametr metody read to max ilość pobranych znaków

print tekst_ze_strony

 

Życie jest krótkie, użyj Pythona :D

Link do komentarza
Udostępnij na innych stronach

w dec c++ ? chyba nie nie da xD

 

zapomniałem dodać ze interesuje mnie tylko i wyłącznie dev c++.

 

curl mam w dev c++ i wyżej podałem kod lecz nie wiem jak zrobić zmienną i czy się wg da dlatego napisałem tu temat liczę na kogoś pomoc :P

Link do komentarza
Udostępnij na innych stronach

Jak chcesz Blind... ziomekkk, w takim razie poczytaj o Dev C++: http://revo.pl/index.php/blog/detailed/70

 

 

No tak ale ja dev c++ mam od wieków i do pewnego programu używam, i taka opcja mi jest potrzebna. a nie będę wszystkiego przepisywać bo by mi to z tydzień zajeło czy ktoś wie jak sprawdzić jakie cyfry są na stronie za pomocą dev c++ ?

Link do komentarza
Udostępnij na innych stronach

No tak ale ja dev c++ mam od wieków i do pewnego programu używam, i taka opcja mi jest potrzebna. a nie będę wszystkiego przepisywać bo by mi to z tydzień zajeło czy ktoś wie jak sprawdzić jakie cyfry są na stronie za pomocą dev c++ ?

 

 

A kto ci każe przepisywać ?? Przecież jason może ci udostępnić swój kod w postacji biblioteki *.dll, a ty odwołasz się do jego kodu który zwróci ci to co tam sobie uzgodnicie :D

 

@Blind.

Jeżeli to w pythonie łatwiej zrobić niż za pomocą C, C++, Delphi, php czy bóg wie czego jeszcze to dlaczego ma nie wciskać ? Wszak aplikacje nie pisze się tylko w jednym języku, a jak już mówiłem po to są biblioteki *.dll czy wstawki innych języków by je używać, a nie wyważać otwarte drzwi.

 

@Topic

My chyba wszyscy zapomnieliśmy co autor chce uzyskać. On chce znaleźć konkretny wyraz na stronie czy występuje. Dlatego po pobraniu strony musi tylko otworzyć plik, wczytywać zawartośc po linijce czy jak sobie tam chce i sprawdzać czy występuje dany wyraz. Jeżeli nie to zwraca mu funkcja false i już

 

poczytaj o klasie string :) i find.

 

A my zaraz zaczniemy wojne w czym pisać programy po raz enty :D (tylko tym razem jeszcze mnie wciągniecie :P)

Link do komentarza
Udostępnij na innych stronach

@Up

No to sorry za wprowadzenie w błąd xD nie znam się na pythonie w ogóle wiem że to obiektowy język i tyle, a i tego pewny nie jestem :P

 

Jak autor chce to mogę mu *.dll skompilować z delphi, lecz to będzie wolniejsze na pewno niż wykonanie kodu pythona :P

 

I love delphi ;)

Link do komentarza
Udostępnij na innych stronach

brawo szukam własnie tego pobrać strone konkretny tekst i go spr w warunku czy to ten nic wiecej :D

 

 

a nie można to za pomocą curl zrobić tam podałem kod

 

unsigned short sprawdz()const

{

 

 

CURL * curl;

CURLcode res;

curl = curl_easy_init();

 

using namespace std;

if( curl)

curl_easy_setopt(curl,CURLOPT_URL, "http://jakislink.pl/jakis plik.php");

int url;

curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE, url); //pobieramy kod zrodlowy

curl_easy_perform(curl);

curl_easy_cleanup(curl);

 

 

 

return url;

 

}

 

czemu mi do zmiennej nie chce dać to co jest w pliku tylko daje do konsoli ??!!

Link do komentarza
Udostępnij na innych stronach

Zrobiłem ci funkcje i wyeksportowałem do *.dll jak chcesz to jej użyj a jak nie to męcz się dalej :D

 

Dyrektywa: stdcall

Nazwa funkcji: GetUrl

 

Parametry:

- Adres url (pchar)

- Adres gdzie zapisać plik tymczasowo (pchar)

 

Zwraca źródło strony (pchar)

 

Przykładowe wywołanie:

 
Source = GetUrl( 'http://www.stedi.pl', 'C:\plik2.html' );

 

>>PLIK

>>Source

Link do komentarza
Udostępnij na innych stronach

mi to jest potrzebne do serwera, i to jest sprawdzanie strony i każdy może sobie sprawdzić :D w 1 momencie.

 

np gracz A wpisuje komendę pobiera funkcje która zwraca mu czy na stronie jest wpisane 1 czy 0. bo tylko na stronie może być wpisane cyfra 0 albo cyfra 1. nic wiecej

 

a poźniej niżej sobie dodam jeżeli będzie 1 w funkcji to do gracza daje komunikat ;p ze brawo itp

Link do komentarza
Udostępnij na innych stronach

gdzie ja napisałem że nie bedą mogli więcej niż 1 osoba.

 

Przecież napisałem wyraźnie że kilka osób bd pobierać stronę i każdy dostanie co innego (co sobie ustawie).

 

ale mówię 1 ma zwrot cyfry 0 a 2 będzie miał 1. nic innego strona nie bd zwracała i użytkownik nie będzie wiedział jaka to strona bo w c++ właśnie sobie wpisze.

Link do komentarza
Udostępnij na innych stronach

@ziomekk

Oni dobrze ci mówią. To że ty pobierasz coś z serwera to nie oznacza iż on nie obsłuży 2 osób. Ta dll'ka co ci dałem pobiera dane zapisuje do pliku i zwraca wartość lecz w między czasie usuwa plik. Dlatego nie może on zostać wykorzystany po raz drugi.

 

Ty jako programista na deskopa ustalasz iż sciągasz plik z serwera a to czy serwer da komuś sciągnąć w tym czasie plik to już cię nie interesuje. Ewentualnie możesz wprowadzić wyłączenie wszystkich elementów klikanych przed wywołaniem funkcji i po wywołaniu włączyć je z powrotem zabezpieczając się że ktoś nie kliknie 2x na guzik proste :)

Link do komentarza
Udostępnij na innych stronach

kurde, my się źle rozumiemy czego ja oczekuje.

 

Ja chce na stronie sprawdzić co jest w pliku, a plik daje możliwość tylko albo zwróci 1 albo 0, w zależności to co wpisze w przeglądarkę.

 

Każda osoba która wywoła funkcje będzie miała albo cyfre 1 albo 0, co ja w późniejszym warunku będę robić coś ala

if(sprawdz = "1"){

oki działa

}else{

nie działa

}

 

no i ta funkcja której oczekuje od Was, "sprawdz" ma się połączyć z stroną i pobrać w stylu co ma wpisane a nie pobrać stronę, może źle nazwałem temat.

 

O masakra dzięki ludziska za zainteresowanie :D może do czegoś dojdziemy wspólnymi siłami :)

Link do komentarza
Udostępnij na innych stronach

@offtop

Ja do pc podchodze co jakiś czas dlatego ci na forum odpowiadam nie na gg.

 

@Topic

No to poniekąd masz to czego chciales w tej dll'ce choć źle cię zrozumieliśmy to dość dobrze to napisalem. Bo wiesz iż strona zwróci ci tylko 1 znak. Dlatego porównaj to co zwróci funkcja ze znakiem np

 

if ( GetUrl( 'unit1.pl/index.php?a=5', 'C:\temp.html' ) == '1' ){
  //Jeżeli true
}else{
  //Jeżeli false
}

Link do komentarza
Udostępnij na innych stronach

może jeszcze więcej informacji podam. strona która obsługuje kody txt, za pieniądze wydaje kod. Ten kod daje na link dotpay.pl/check-id klienta-kod.xml i jeżeli wpiszemy to w httpd to jeżeli kod jest poprawny to mamy "1" jak nie to mamy "0"

 

i nie może być tutaj do zapisu w plik bo jeżeli 1 osoba która wywołała tą funkcje i będzie "1" - kod poprawny to 2 osoba z '0' -kod zły wykorzysta to jako kod poprawny i 2 osoby otrzymają daną rzecz.

 

wiec musi być to robione w pamięci.

 

 

poczekamy na kontakt gg będzie szybciej :D i wynik wystawimy dla innych tak będzie najlepiej chyba że do tego czasu ktoś pomoże szybciej i trafi w moje oczekiwania.

Link do komentarza
Udostępnij na innych stronach

coś mam ;P łączy sie pytanie jak wyszukać tekst? do zmiennej?

 

 

 

KODbool sprawdz() {

//----------------------

// Initialize Winsock

WSADATA wsaData;

int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);

if (iResult != NO_ERROR)

printf("Error at WSAStartup()\n");

 

//----------------------

// Create a SOCKET for connecting to server

SOCKET ConnectSocket;

ConnectSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if (ConnectSocket == INVALID_SOCKET) {

printf("Error at socket(): %ld\n", WSAGetLastError());

WSACleanup();

return false;

}

 

//----------------------

// The sockaddr_in structure specifies the address family,

// IP address, and port of the server to be connected to.

sockaddr_in clientService;

clientService.sin_family = AF_INET;

clientService.sin_addr.s_addr = inet_addr( "127.0.0.1" );

clientService.sin_port = htons( 80 );

 

//----------------------

// Connect to server.

if ( connect( ConnectSocket, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR) {

printf( "Failed to connect.\n" );

WSACleanup();

return false;

}

 

printf("Connected to server.\n");

WSACleanup();

return false;

}

 

 

 

 

coś mam ;P łączy sie pytanie jak wyszukać tekst? do zmiennej?

Link do komentarza
Udostępnij na innych stronach

Zaimplementuj algorytm Knutha-Morrisa-Pratta, albo inny do wyszukiwania tekstu. Ewentualnie skorzystaj z jakiejś biblioteki do wyrażeń regularnych (nie wiem jak w C++, ale w standardowych modułach Pythona jest re).

 

 

jak mówiłem ciemny jestem w tym :P nie jestem programistą :P dlatego proszę o pomoc na forum coś bardziej na gotowe ;)

 

 

 

 

EDIT

na stronie http://dotpay.pl/check_code.php?id=%22.

 

jest cyfra 0 alb0 1, 0 to błędy kod, 1 to poprawny.

 

ma się połączyć z tą stroną (co już robi) i sprawdzić co jest czy 1 czy 0 (mówimy tu o cyfrach a nie poprawnym połączeniu albo błędnym).

 

oraz szybki zwrot do funkcji co jest 1 czy 0. jaśniej nie mogę napisać bo mówię jestem początkujący :)

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...