Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Balans la ridicare picior dupa ac...

Izolatie intre OSB si placa de be...

instalatie incalzire apartament 2...

HEV D Segment - intrebari/pareri ...
 Hyperos consum excesiv baterie?

Contractul pentru Salubrizare est...

Elicopterul care-l transporta pe ...

Sfaturi achizitionare apartament ...
 Permis de conducere nou

Packet Loss la Digi

Masurare parametri CATV prin Conn...

Youtube a inceput sa aiba lag!?
 Internet Archive - adauga item la...

Electrica Furnizare + Poșta ...

Probleme cu scurgerea de ulei pe ...

Blocuri cu apartamente de 5+ camere
 

Inca o problema legata de parsarea unui site web...

- - - - -
  • This topic is locked This topic is locked
9 replies to this topic

#1
anz

anz

    Member

  • Grup: Members
  • Posts: 592
  • Înscris: 16.02.2013
Salutare tuturor.
Am pus acum ceva timp o intrebare aici despre cum as putea sa construiesc un parser pentru site-ul Devjob.ro, si ii multumesc celui care mi-a dat raspunsul.
In prezent ma confrunt cu inca o problema, tot de parsarea unui site, de data asta ro.indeed.com
Task-ul este in felul urmator: am nevoie sa culeg de pe acest site numai anunturile despre joburi din domeniul IT din ziua curenta. Pentur asta, daca aleg  aceste filtre in pagina, se obtine urmatorul URL: https://ro.indeed.co...?q=it&sort=date
Problema este ca eu cand fac request la acest URL din aplicatia mea Spring, in felul urmator:
                  Jsoup.connect("https://ro.indeed.co...q=it&sort=date").get();
nu primesc acest document cu anunturile sortate dupa data, am verificat asta la consola, dupa ce am extras datele de anunturi, pe care le-am afisat cu System.out.println(). Se afisaza la consola cu totul altceva decat cele care sunt in pagina de la URL-ul repectiv.
Imi spune si mie cineva, unde anume este gresit? De ce nu vine de la server exact documentul care se afisaza in browser...? Mai trebuie sa fac ceva setari, sau ce Doamne-iarta-ma mai trebuieste facut? Pentru ca jur ca mi-au dat de cap site-scrapperele astea, nu stiu ce sa le mai fac.
Daca nu primesc documentul cu joburile sortate atunci toata aplicatia este egala cu 0, nu am cum sa caut prin toate paginile site-ului doar cele care imi trebuie mie (vreo cateva...)
Multumesc celui care se oboseste sa citeasca, si mai mult daca si stie cum sa raspunda!

#2
robert23mg

robert23mg

    Member

  • Grup: Members
  • Posts: 559
  • Înscris: 18.06.2017
Se pare ca intregul document este generat pe server cu tot cu js, vezi daca te ajuta poza asta, trebuie sa ajungi cumva la acel jobmap, alea sunt rezultatele sortate.

res.png

Attached Files

  • Attached File  res.png   149.06K   31 downloads


#3
anz

anz

    Member

  • Grup: Members
  • Posts: 592
  • Înscris: 16.02.2013

 robert23mg, on 10 februarie 2022 - 17:42, said:

Se pare ca intregul document este generat pe server cu tot cu js, vezi daca te ajuta poza asta, trebuie sa ajungi cumva la acel jobmap, alea sunt rezultatele sortate.
O sa te rog frumos sa fii mai explicit, eu sunt incepator in domeniu, de-abia de curand am auzit despre functia Network Tab a browserului. Cum anume generezi acel document cu variabilele Javascript? Si de ce nu se genereaza rezultatele in doc. HTML ci in Javascript? Ma poti ajuta te rog?

#4
robert23mg

robert23mg

    Member

  • Grup: Members
  • Posts: 559
  • Înscris: 18.06.2017
Fisierele unui site se afla pe un server.
Comunicarea intre browser si server se face prin socket sau perechi de http request-response.
Browserul trimite un request catre server iar acesta raspunde cu o resursa/informatie.
In cazul de fata, nu exista o ruta separata care sa iti serveasca in raspuns doar un array cu rezultate, ci serverul asambleaza intreaga pagina (html, css si javascript) si o serveste intr-un singur raspuns, iar browserul ti-o afiseaza pe ecran.

#5
anz

anz

    Member

  • Grup: Members
  • Posts: 592
  • Înscris: 16.02.2013

 robert23mg, on 10 februarie 2022 - 19:19, said:

Fisierele unui site se afla pe un server.
Comunicarea intre browser si server se face prin socket sau perechi de http request-response.
Browserul trimite un request catre server iar acesta raspunde cu o resursa/informatie.
In cazul de fata, nu exista o ruta separata care sa iti serveasca in raspuns doar un array cu rezultate, ci serverul asambleaza intreaga pagina (html, css si javascript) si o serveste intr-un singur raspuns, iar browserul ti-o afiseaza pe ecran.
Eu nu m-am referit la treaba asta... eu am zis ca documentul care se obtine dupa aplicarea filtrelor de data (care este cel pe care il vezi tu in DevTools-ul browserului) nu este acelasi cu cel pe care il obtin cand fac request-ul din aplicatia mea Java: Jsoup.connect("link_URL").get;
In urma acestui request se obtine un obiect Document, care bineinteles vrea sa reprezinte acel document HTML. Im momentul cand eu merg pe arborele DOM si selectez numele job-ului si compania ca sa il afisez la consola: SURPRISE !!!!  se afisaza cu totul si cu totul alte job-uri, nu cele care apar in pagina din browser...
INtrebarea mea este DE CE ??? aplicatia mea Jsoup nu obtine acel document HTML, care este de cuviinta sa se obtina...???

In al doilea rand nu am de ce sa parsez array-ul tau Javascript pe care l-ai scris mai sus deoarece toata informatia se gaseste in documentul HTML. In fogura atasata se poate vedea ca un element din acela <a> cu background galben reprezinta un anunt de job din pagina. Si in doc. acesta HTML intr-adevar anunturile sunt cele sortate, obtinute in urma filtrarii dupa data, asa cum se vede si in browser.
Insa repet, aplicatia mea Java, dupa ce fac requestul la acest document NU il primesc pe acesta, ci altul, care are alte anunturi in pagina...

Attached Files


Edited by anz, 10 February 2022 - 20:02.


#6
darkangel2

darkangel2

    Senior Member

  • Grup: Senior Members
  • Posts: 3,389
  • Înscris: 26.01.2019
Daca accesez http://ro.indeed.com...?q=it&sort=date din Firefox, obtin niste rezultate.
Daca il accesez din Chrome Guest, obtin alte rezultate.
Daca astept cateva minute si accesez din alt Chrome Guest, obtin alte rezultate.
"E de la ei!" :D

#7
radu103

radu103

    Guru Member

  • Grup: Senior Members
  • Posts: 12,583
  • Înscris: 15.11.2003

 darkangel2, on 10 februarie 2022 - 22:04, said:

Daca accesez http://ro.indeed.com...?q=it&sort=date din Firefox, obtin niste rezultate.
Daca il accesez din Chrome Guest, obtin alte rezultate.
Daca astept cateva minute si accesez din alt Chrome Guest, obtin alte rezultate.
"E de la ei!" Posted Image
Voi credeti ca toti sunt fraieri ca sa le faceti voi clona la continut ?
Lasati-va de activitatile astea pana nu va cauta avocatii si/sau procurorii dupa caz

#8
darkangel2

darkangel2

    Senior Member

  • Grup: Senior Members
  • Posts: 3,389
  • Înscris: 26.01.2019
Care "voi"? :D

#9
anz

anz

    Member

  • Grup: Members
  • Posts: 592
  • Înscris: 16.02.2013

 darkangel2, on 10 februarie 2022 - 22:21, said:

Care "voi"? Posted Image
Nevermind, am rezolvat oricum si merge asa cum ii, culege anunturile din ziua de azi...
Concluzia: o porcarie de site !!!

#10
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,504
  • Înscris: 10.08.2005

interesant ca este onpircarie dat totusi le extragi continutul
ce faci tu nu este un "parser html" ci un crawler care sa navigheze si sa culeaga date.
Acum, cat de bucurosi o sa fie oamenii unde tu indrepti "robotul" e treaba lor, si daca simt ei va fi si a ta.

Raspunsul la intrebarea "De ce" poate fi de simplul "javascript", pana la "site-ul ofera ce vrea, pe baza de cookies".
Radu nu iti spune in nume de rau,
Ca sa fie in ton cu concluzia ta, topicul se inchide, cu mentiunile:
1. Nu mai furati continut.
2. parserul deja exista, jsoup
3. ceea ce face ca problema ta sa tina de JAVA si metode specifice suportate de jsoup


Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate