Pereiti prie turinio

Rekomenduojami pranešimai

  • po 1 mėnesio...

Dar keli tool's, kurių čia nemačiau:

 

* Casperjs (JavaScript X11-less webkit variklis)

* Beautiful Soup (vanilla html)

* lxml (vanilla html, kartu su Beautiful Soup)

 

CasperJs yra slow, tačiau beveik-full-DOM-support yra gerai, jeigu reikia pilnai nurendering tinklapį (screen-shot's, gudresnis element discovery). LXML yra super-fast, ypač su xpath'ais, galima per urllib2 gauti proxy ir cookies support'ą, pvz:

 

def make_open_http(self):
       proxy_support = urllib2.ProxyHandler({'http': '127.0.0.1:8118'})
       cooki_support = urllib2.HTTPCookieProcessor()
       opener = urllib2.build_opener(cooki_support, proxy_support)
       opener.addheaders = [('User-agent', 'Mozilla/5.0')]  # we are browser, lol
       urllib2.install_opener(opener)

       def open_http(method, url, values={}):
           if method == "POST":
               return opener.open(url, urllib.urlencode(values))
           else:
               return opener.open(self.url_with_query(url, values))

       return open_http

 

Happy web scrapping.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pora patarimų: pirmiausiai, PEP-8 rekomenduoja Python kodą indentuoti 4 tarpais, ne 8 – būtų geriausia taip ir daryti, kad nesusipeštų kodas kada nors iš skirtingų šaltinių. Taip pat, nors urllib2 nėra bloga biblioteka, bet jos API – ne koks. Pats geriausias HTTP klientas yra requests – verta naudoti visada.

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 2 mėnesių...
  • po 1 mėnesio...

Gal kas turit tokį scraperį, kur suvedus puslapių rss adresus, sąraše rodytų naujienų title su aktyvia nuoroda ir naujienos data? :)

 

Neperseniausiai užmačiau scrapely. Iš aprašymo

 

Given some example web pages and the data to be extracted, scrapely constructs a parser for all similar pages.

 

Jeigu jam paduosi kelis rss srautus, jis ``supras'' kaip yra pateikiami duomenys ir po to rodys Tau tai, ką pageidauji.

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 9 mėnesių...
  • po 2 mėnesių...

Sveiki,

 

Mane domina kitas klausimas, kas liečia web scrapingą - kaip tarkim reaguotų koks delfi.lt ar tarkim litrail.lt, jei aš "atakuočiau" jų saitus su užklausomis tarkim kas 15 min dėl mane dominančios informacijos? Gal kam yra tekę su tuo susidurti arba gal kas yra kokių serverių adminas ir galėtų pakomentuoti? Nes tie, kas turi technines priemones (o gal tą Google Analytics parodytų) manau analizuojasi srautus ir pamatę reguliarias užklausas iš to pačio IP nejaugi neblokuotų?

Redagavo brasta
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki,

 

Mane domina kitas klausimas, kas liečia web scrapingą - kaip tarkim reaguotų koks delfi.lt ar tarkim litrail.lt, jei aš "atakuočiau" jų saitus su užklausomis tarkim kas 15 min dėl mane dominančios informacijos? Gal kam yra tekę su tuo susidurti arba gal kas yra kokių serverių adminas ir galėtų pakomentuoti? Nes tie, kas turi technines priemones (o gal tą Google Analytics parodytų) manau analizuojasi srautus ir pamatę reguliarias užklausas iš to pačio IP nejaugi blokuotų?

Nusiurbimam siūlau naudoti digital ocean VPS patį pigiausią, jei IP užblokuos (o taip dažniausiai nutinka), galėsi pasidaryti backup image, ir susikurti naują VPS su kitu IP, na ir taip kol vienam iš Jūsų atsibos. DO turi gerą API, su PHP labai greitai galima susikurti sistemėlę kuri automatiškai darys viską ką pasakiau, nereiks sėdėti ir persidarynėti pačiam.

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 3 mėnesių...

Ar gresia kokianors teisine atsakomybe jei rinkciau informacija tarkim apie nuolaidas is maxima, iki, norfa ir t.t. puslapiu, bet viesai neskelbciau informacijos? Ta prasme butu tik apps'as man, o info atnaujinciau 2 kartus per para.

Redagavo highontrance
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ar gresia kokianors teisine atsakomybe jei rinkciau informacija tarkim apie nuolaidas is maxima, iki, norfa ir t.t. puslapiu, bet viesai neskelbciau informacijos? Ta prasme butu tik apps'as man, o info atnaujinciau 2 kartus per para.

 

 

Asmeniniam vartojimui (visgi tam jie tas nuolaidas skelbia), o ne viesam platinimui, tikrai neturetu buti problemu. Ir visumoj, kiek suprantu, viesa informacija, gali buti viesai nuodajam, nebent ja apima svetaines copyright.

 

Beje, kaip jie tave pagaus, kad tu tas nuolaidas skanuoji?

Redagavo Imago
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na as panasiai galvoju :) o kas del pagavimo, tai jei nesijunkciau kas 5min manau tikrai neturetu kilt problemu.

 

Tu nori atnaujint 2 kartus per para (kas 12h), o antra, nuolaidos bus vos keliuose puslapiuose, tad uztenka juos ikraut kas ~3sec ir busi saugus. Tiesa sakant, net ir paraleliai ikrovus visus nuolaidu puslapius, niekas taves neturetu pastebeti, nes DDoS apsaugos nesureguos i toki maza srauta. O antra, net ir padarius DDoS, blogiausiu atveju jie tave apkaltins tik uz pati DDoS, nes nera budo zinoti, ka tu tiksliai darai su tais puslapiai, ypatingai, kad DDoSinant, tu net nenori uzkrovineti tu paslapiu :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 1 mėnesio...

Sveiki, turiu pora klausimu del web scrapinimo:

 

(Naudoju JAVA + JSoup)

 

Noredamasi papraktikuoti sugalvojau pasirasyti maza scraperi gauti pigius skrydzius, taikini pasirinkau avia.lt, susiradau kuriuose div'uose saugo jie kainas ir pns, bet beda viena - pacius skrydzius uzkrauna JavaScript'as po tam tikro laiko (kol istraukia duom. bazes/kitu svetainiu is kuriu jie patys juos traukia) tad nuskaitant HTML Jsoup nemato paciu skrydziu nes ju nera. Gal kas zino kaip to isvengti, arba zino kita skrydziu pasiulymu svetaine kurioje info butu prieinamesne?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki, turiu pora klausimu del web scrapinimo:

 

(Naudoju JAVA + JSoup)

 

Noredamasi papraktikuoti sugalvojau pasirasyti maza scraperi gauti pigius skrydzius, taikini pasirinkau avia.lt, susiradau kuriuose div'uose saugo jie kainas ir pns, bet beda viena - pacius skrydzius uzkrauna JavaScript'as po tam tikro laiko (kol istraukia duom. bazes/kitu svetainiu is kuriu jie patys juos traukia) tad nuskaitant HTML Jsoup nemato paciu skrydziu nes ju nera. Gal kas zino kaip to isvengti, arba zino kita skrydziu pasiulymu svetaine kurioje info butu prieinamesne?

Isvengti neis.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Turiu patirties scrapinant didelius websaitus, pvz. buvau parases skriptus kurie pastoviai surinkdavo skelbimus is autoscout24.de, kainas ir kito prekiu info is mazdaug 50 lietuvisku buitines technikos el. parduotuviu, jau beveik metus veikia scriptas sinchronizuojantis el. parduotuves kainas/likucius su prekiu tiekejo Kinijoje eshopu. Jei kam reiketu komerciniu web scrapingo paslaugu, galite kreiptis el. pastu info [@] openweb [.] lt . Kartu su scrapingo paslauga taip pat galiu pasiulyti apjungima su kitomis sistemomis (el. parduotuvemis, interneto svetainemis).

Redagavo DeividasC
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki, turiu pora klausimu del web scrapinimo:

 

(Naudoju JAVA + JSoup)

 

Noredamasi papraktikuoti sugalvojau pasirasyti maza scraperi gauti pigius skrydzius, taikini pasirinkau avia.lt, susiradau kuriuose div'uose saugo jie kainas ir pns, bet beda viena - pacius skrydzius uzkrauna JavaScript'as po tam tikro laiko (kol istraukia duom. bazes/kitu svetainiu is kuriu jie patys juos traukia) tad nuskaitant HTML Jsoup nemato paciu skrydziu nes ju nera. Gal kas zino kaip to isvengti, arba zino kita skrydziu pasiulymu svetaine kurioje info butu prieinamesne?

 

Visai sudomino tavo klausimas, tai užmečiau akį kaip tas avia.lt veikia.

 

Visų pirma, pabandžius JAVA ir JSoup, su kai kuriais puslapiais nėra problemų, pvz: https://avia.lt/pigus-skrydziai/ ištraukti skrydžius tereikia kelių eilučių:

 

Document doc = Jsoup.connect("https://avia.lt/pigus-skrydziai/").get();
Elements els = doc.select(".white_block > .smaller table div");
for (Element e: els) {
   System.out.println(e.text());
}

 

Dabar su paieškos puslapiu šiek tiek įdomiau - pažiūrėjus į jų dinamiškai gaunamus duomenis (chrome/firefox/opera: inspect element > network, filtruojam pagal XHR) ir atfiltravus visokį social ir trackingo šū** lieka jų kreipimasis į https://aviago.com.ua/includes/sr/get_offers.php, kuris pasirodo grąžina skrydžių duomenis json formatu! Pažiūrėjus užklausos formos siunčiamus duomenis, nieko ypatingo, tik galbūt session gali kelti problemų. Headeriai irgi neturėtų užkliūti. Taigi, permetam viską į bet kokį REST klientą (aš naudoju Postman, Chrome extension'ą) ir paleidžiam identišką užklausą su visais form parametrais. Viskas gražu, duomenys ateina ir be avia.lt pagalbos. Lieka session parametras, bet pabandžius be jo ir vėl viskas veikia:

 

post-81455-0-66308000-1422054317_thumb.png

 

Belieka peržiūrėti, kaip kainos atvaizduojamos tame json dokumente. Šiek tiek Ctrl+F ir galima susidaryti vaizdą:

 

flexibleOfferList.flexibleOffer turi duomenis apie pasiūlymus su kainomis, o pačiuose pasiūlymuose yra nuorodos į konkrečius skrydžius - flexibleOfferList.flexibleOffer.combinations.indexList laiko identifikatorius į sectorAvailabilityList.sectorAvailability.sectorAvailabilityId, kur laikomi tarpiniai skrydžiai.

 

Jei yra noro, galima viską susidėlioti į vietas (kelionės trukmę, skrydžių segmentus ir t.t.), o jei ne, tai išrūšiavus flexibleOfferList pagal kainą gaunam pigiausius skrydžius tai užklausai, o keičiant iata[1], iata[2], arrDate, depDate parametrus galima rasti viską, ko reikia.

 

Sėkmės scrapinant ;)

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 3 savaičių...

Sveiki, turiu pora klausimu del web scrapinimo:

 

(Naudoju JAVA + JSoup)

 

Noredamasi papraktikuoti sugalvojau pasirasyti maza scraperi gauti pigius skrydzius, taikini pasirinkau avia.lt, susiradau kuriuose div'uose saugo jie kainas ir pns, bet beda viena - pacius skrydzius uzkrauna JavaScript'as po tam tikro laiko (kol istraukia duom. bazes/kitu svetainiu is kuriu jie patys juos traukia) tad nuskaitant HTML Jsoup nemato paciu skrydziu nes ju nera. Gal kas zino kaip to isvengti, arba zino kita skrydziu pasiulymu svetaine kurioje info butu prieinamesne?

 

Sveikas, gali pabandyti naudoti PhantomJs arba Selenium, kurie labai padeda tokiose situacijose.

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 3 savaičių...

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...