Forum » Programiranje » web scraping ideje
web scraping ideje
HotBurek ::
Pozdravljeni.
Iščem ideje za uporabne/zanimive/smiselne web scraping projekte.
- Ena ideja so artikli, ki se prodajajo v spletnih trgovinah (to dejansko imam za Špar/Mercator/Tuš CC). Kaj bi se potem dalo s temi podatki naprej naredit? Koga bi zanimali ti podatki?
- Druga ideja je, da bi naredil crawler, ki bi šel po home page-ih, potem bi pa lahko z "SQL" sintaktso iskal; Najdi vse strani, kjer se pojavi beseda "jogurt" v H1 tagu, najdi vse strani, kjer v HEAD-u ni description tag-a, najdi vse strani, ki imajo TABLE tag v BODY-ju, najdi vse strani, ki jih gosti xyz provajder itn. Ta stvar bi mogoče bila zanimiva za iskanje nepotimalnih strani...
Še kakšne druge ideje?
Iščem ideje za uporabne/zanimive/smiselne web scraping projekte.
- Ena ideja so artikli, ki se prodajajo v spletnih trgovinah (to dejansko imam za Špar/Mercator/Tuš CC). Kaj bi se potem dalo s temi podatki naprej naredit? Koga bi zanimali ti podatki?
- Druga ideja je, da bi naredil crawler, ki bi šel po home page-ih, potem bi pa lahko z "SQL" sintaktso iskal; Najdi vse strani, kjer se pojavi beseda "jogurt" v H1 tagu, najdi vse strani, kjer v HEAD-u ni description tag-a, najdi vse strani, ki imajo TABLE tag v BODY-ju, najdi vse strani, ki jih gosti xyz provajder itn. Ta stvar bi mogoče bila zanimiva za iskanje nepotimalnih strani...
Še kakšne druge ideje?
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
galu ::
Karkoli z natural language processing je praviloma zanimivo. Vir podatkov je lahko kar slo-tech. Nekaj zanimivih statistik bi bilo:
- sentiment v relaciji s časom (ura, mesec, ...)
- lista ekstremno (ne)sentimentalnih uporabnikov
- druge osnovne statistike (char/post count over time)
Tehnično bolj zanimiv scraper bi bil tak, ki bi nudil splošno rešitev. Mu daš na primer samo seznam HTML tagov (s hierarhijo) iz dane domene, ki določajo target text (in njegove meta-podatke). Site-map (in dejanske "podstrani") pa si najde sam. Tako bi enak scraper načeloma deloval tudi za kak news-site.
- sentiment v relaciji s časom (ura, mesec, ...)
- lista ekstremno (ne)sentimentalnih uporabnikov
- druge osnovne statistike (char/post count over time)
Tehnično bolj zanimiv scraper bi bil tak, ki bi nudil splošno rešitev. Mu daš na primer samo seznam HTML tagov (s hierarhijo) iz dane domene, ki določajo target text (in njegove meta-podatke). Site-map (in dejanske "podstrani") pa si najde sam. Tako bi enak scraper načeloma deloval tudi za kak news-site.
Tako to gre.
HotBurek ::
50 minut za špar in mtehnika, doba ura in pol za mercator in tuš cc.
Shranim jih v tabele (MariaDB), vsak dan.
Shranim jih v tabele (MariaDB), vsak dan.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
VaeVictis ::
Če imaš cene in povežeš še hofer, lidl, ..., bi lahko naredil neke vrste ceneje.si za hrano, sicer je vprašanje, če bi bili trgovci tega veseli.
Če imaš poleg tega še hranilne vrednosti in se povežeš še s kulinarika.net ali kaj podobnega lahko narediš ideje za kuho in koliko te pride kosilo, ter kje najceneje kupiš vse sestavine, z lokacijo lahko celo narediš optimizrano shopping listo.
Če imaš iskalnik po h1,h2 itd. bi lahko naredil neke vrste 3d web iskalnik, kjer je h1 izbočena ploskev, h2 manj izbočena ploskev itd., kak VR oz. AR Google bi kar zanimivo lahko tako izgledal.
Če imaš poleg tega še hranilne vrednosti in se povežeš še s kulinarika.net ali kaj podobnega lahko narediš ideje za kuho in koliko te pride kosilo, ter kje najceneje kupiš vse sestavine, z lokacijo lahko celo narediš optimizrano shopping listo.
Če imaš iskalnik po h1,h2 itd. bi lahko naredil neke vrste 3d web iskalnik, kjer je h1 izbočena ploskev, h2 manj izbočena ploskev itd., kak VR oz. AR Google bi kar zanimivo lahko tako izgledal.
MisterR ::
Potem lahko narediš podrobno primerjavo cen:
- izdelek, teža (kg,ml,L itd), cena, cena na enoto (kg,ml,L itd)
- povežeš vse skupaj v aplikacijo "nakupovalni listek" in ko oseba doda "jogurt" predlaga vse jogurte, ko doda "navadni jogurt" predlaga samo navadne, ko doda "jogurt 500ml" doda samo 500ml itd..
Nekaj takega sem želel sam izdelati, pa mi je žal takrat zmanjkalo časa za učenje kakih naprednih metod scrapanja.
- izdelek, teža (kg,ml,L itd), cena, cena na enoto (kg,ml,L itd)
- povežeš vse skupaj v aplikacijo "nakupovalni listek" in ko oseba doda "jogurt" predlaga vse jogurte, ko doda "navadni jogurt" predlaga samo navadne, ko doda "jogurt 500ml" doda samo 500ml itd..
Nekaj takega sem želel sam izdelati, pa mi je žal takrat zmanjkalo časa za učenje kakih naprednih metod scrapanja.
Zgodovina sprememb…
- spremenil: MisterR ()
HotBurek ::
Ko sem začel s temi podatki trgovin, sem imel v mislih idejo, da bi naredil za ~100 (spletnih) trgovin, program bi bil pa namenjen trgovcem, da bi imeli vsakodnevno osvežen pogled na "tržišče";
- zlistaj vse nove produkte (vsak dan so novi), ter tistih, ki jih ni več (v spletni trgovini)
- zlistaj vse produkte, katerim se je spremenila cena (in so v kategoriji "mleko", od proizvajalca X, ...)
- zlistaj vse produkte, ki so bili dodani/odstranjeni iz popusti/promocije/akcije
- zlistaj vse produkte proizvajalca X od vseh trgovin (ki jih ne prodaja trgvoina Y)
To še moram malo raziskat in povprašat. Zadevo sem potem mislil razširit na trgovine s cotami (nama...), elektronika (bigabn...), gradbeni material (merkur, impos...).
- zlistaj vse nove produkte (vsak dan so novi), ter tistih, ki jih ni več (v spletni trgovini)
- zlistaj vse produkte, katerim se je spremenila cena (in so v kategoriji "mleko", od proizvajalca X, ...)
- zlistaj vse produkte, ki so bili dodani/odstranjeni iz popusti/promocije/akcije
- zlistaj vse produkte proizvajalca X od vseh trgovin (ki jih ne prodaja trgvoina Y)
To še moram malo raziskat in povprašat. Zadevo sem potem mislil razširit na trgovine s cotami (nama...), elektronika (bigabn...), gradbeni material (merkur, impos...).
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
Zgodovina sprememb…
- spremenilo: HotBurek ()
MisterR ::
Trgovci imajo drugačen vpogled na tržišče, preko dobaviteljev. Tako, da jim to ne bi kaj dosti koristilo. Saj vsi vedo, za vse cene, še preden objavijo letake.
Večja baza je v potrošnikih.
Večja baza je v potrošnikih.
VaeVictis ::
HotBurek kako si se pa učil tega scrapanja, kje si začel, je kak tutorial, knjiga ali kaj podobnega glede tega?
Hvala že vnaprej za odgovor.
Hvala že vnaprej za odgovor.
HotBurek ::
Jst sem slišal, da imajo zajem podatkov na POSu, tako da vidijo, kje kdaj in kaj se prodaja. Mogoče manjši nimajo tega sistema (Nielsen).
Kaj bi uporabnikom to koristilo? Lahko primerja ceno jogurtov. Monetiziral bi pa kako? :)
VV, Python (requests.packages.urllib3) + beautifulsoup4 (za HTML) + json (za json to object). Naučil sem se iz potrebe/želje po tem, da poberem podatke dol in potem dolga pot različnih poskusov. :)
Da še dodam + za risanje grafov (bokeh).
Bokeh iris: https://docs.bokeh.org/en/latest/docs/g...
Kaj bi uporabnikom to koristilo? Lahko primerja ceno jogurtov. Monetiziral bi pa kako? :)
VV, Python (requests.packages.urllib3) + beautifulsoup4 (za HTML) + json (za json to object). Naučil sem se iz potrebe/želje po tem, da poberem podatke dol in potem dolga pot različnih poskusov. :)
Da še dodam + za risanje grafov (bokeh).
Bokeh iris: https://docs.bokeh.org/en/latest/docs/g...
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
Zgodovina sprememb…
- spremenilo: HotBurek ()
VaeVictis ::
Jst sem slišal, da imajo zajem podatkov na POSu, tako da vidijo, kje kdaj in kaj se prodaja. Mogoče manjši nimajo tega sistema (Nielsen).
Kaj bi uporabnikom to koristilo? Lahko primerja ceno jogurtov. Monetiziral bi pa kako? :)
App - reklame, spletna stran podobna ceneje.si - reklame, ...
HotBurek ::
A pri nas obstaja kakšna stran, kjer lahko primerjaš cene hrane?
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
MisterR ::
Jst sem slišal, da imajo zajem podatkov na POSu, tako da vidijo, kje kdaj in kaj se prodaja. Mogoče manjši nimajo tega sistema (Nielsen).
Kaj bi uporabnikom to koristilo? Lahko primerja ceno jogurtov. Monetiziral bi pa kako? :)
VV, Python (requests.packages.urllib3) + beautifulsoup4 (za HTML) + json (za json to object). Naučil sem se iz potrebe/želje po tem, da poberem podatke dol in potem dolga pot različnih poskusov. :)
Da še dodam + za risanje grafov (bokeh).
Bokeh iris: https://docs.bokeh.org/en/latest/docs/g...
Preko reklam v appu ali na strani, preko rangiranja prikazovanja trgovin itd. Trgovci so pripravljeni pošteno plačati za dobro targetirane oglase.
Sploh če veš kaj ima uporabnik na nakupovalnem listku.
Ah torej imaš osnoven scraping brez nekega procesiranja zadaj? Torej znova in znova skeniras celotno trgovino?
HotBurek ::
Ja, podatki se vsakodnevno preneseje. Trenutno so vsi podatki ene trgovine v eni tabeli.
Potem je še en "dwh" proces (trenutno samo za Tuš CC), kjer se primerja seznam današnjih produktov z včerašnjimi in shrani:
- kateri so novi produkti (NEW)
- katerih produktov ni več (OUT)
- ter kateri produkti so že bili, potem jih ni bilo, in potem so znova prišli (IN)
Recimo za Tuš CC so danes trije novi produkti:
https://www.tuscc.si/izdelek/krof-80g-6...
https://www.tuscc.si/izdelek/atlantski-...
https://www.tuscc.si/izdelek/igraca-bla...
Na isti načim se da še za ostale trgovine. Pa tudi, da bi gledal za spremembami cen, ter spremembami izdelkov ki so/niso v popusti/promocije/akciji.
Potem je še en "dwh" proces (trenutno samo za Tuš CC), kjer se primerja seznam današnjih produktov z včerašnjimi in shrani:
- kateri so novi produkti (NEW)
- katerih produktov ni več (OUT)
- ter kateri produkti so že bili, potem jih ni bilo, in potem so znova prišli (IN)
Recimo za Tuš CC so danes trije novi produkti:
https://www.tuscc.si/izdelek/krof-80g-6...
https://www.tuscc.si/izdelek/atlantski-...
https://www.tuscc.si/izdelek/igraca-bla...
Na isti načim se da še za ostale trgovine. Pa tudi, da bi gledal za spremembami cen, ter spremembami izdelkov ki so/niso v popusti/promocije/akciji.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
MisterR ::
Potem še scrapaj akcije (za upokojence, nad 2€, dva za ceno enega itd.), Tukaj bo verjetno potreben OCR pdfjev (letakov).
HotBurek ::
Sem razmišljal in prišel na idejo, da bi lahko združil produkte iz več manjših trgovin (tiste ti ki niso v big 6) v eno virtualno, z iskanje po produktih, izdelavi lastnega shopping listka in obveščanju sprememeb (cena, dobavljivost), ter novi produkti.
Recimo za živila, kmetije (primer: https://www.sklojca.si/ ).
In potem bi lahko iskal med, jogurt itn po bazi več manjših ponudnikov (in ne ravno mainstream with low prices and questionable quality).
Recimo za živila, kmetije (primer: https://www.sklojca.si/ ).
In potem bi lahko iskal med, jogurt itn po bazi več manjših ponudnikov (in ne ravno mainstream with low prices and questionable quality).
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
youPlonker ::
Potem lahko narediš podrobno primerjavo cen:
- izdelek, teža (kg,ml,L itd), cena, cena na enoto (kg,ml,L itd)
- povežeš vse skupaj v aplikacijo "nakupovalni listek" in ko oseba doda "jogurt" predlaga vse jogurte, ko doda "navadni jogurt" predlaga samo navadne, ko doda "jogurt 500ml" doda samo 500ml itd..
Nekaj takega sem želel sam izdelati, pa mi je žal takrat zmanjkalo časa za učenje kakih naprednih metod scrapanja.
Jaz mislim, da ni toliko problem scrapat/pridobivat vsebino od slovenskih trgovcev za tvoj nakupovalni listek (na kakršenkoli način že to počneš), večji problem je npr. LCA jagodni jogurt iz Tuša "uparit" z LCA jagodnim jogurtom iz Mecatorja, kategorizirat pravilno izdelke, pravilno določit ceno glede na količino (itak imajo količino različni trgovci različno zavedeno, kako boš kilo pomaranč iz mercatorja primerjal z lamberčkom pomaranč iz Hoferja?) in tako dalje.
Glede scrapanja - nekaj opcij, za katere se mi zdi, da so aktualne:
1. Pure html stran, ki jo lahko rekurzivno "preskeniraš" za vse a href tage in jih pač vse obiščeš (primer: Hofer webpage). Za Hoferjevo trgovino sem to pred kratkim naredil, ful enostavno, potem pa pač dodaš še neko svojo custom logiko - določiš tage v katerih se nahajajo artikli in te shraniš v DB.
2. Javascript app, za katero rabiš nek engine, da jo poženeš v tvojem programu (sam sem uporabljal https://www.npmjs.com/package/puppeteer). To je že bolj težavno, v bistvu niti ne vem, če je to pravilen pristop... Fora je, da z običajnim HTTP GET requestom ne dobiš vsebine, kot je na voljo v brskalniku, ki ima svoj Javascript engine, na podlagi katerega zgenerira HTML tage iz SPA kode. Primer: Mercator Spletna trgovina.
3. Izvohaš REST API, ki ga prej omenjena aplikacija uporablja in poskušaš podatke direktno pridobivat prek njega. Če je ta API ful zaščiten, se pod nosom obriši.
4. High tech machine learning in prepoznavanje objektov z reklamnega prospekta. Ideja: mercatorjevo pdf reklamo spustiš čez to in stvar ti sama prepozna zelenjavo, sadje, salame itd.
5. Najameš človeka, da ročno pregleda prospekte vsak teden in vpisuje izdelke v bazo. Če se ne motim, tudi ceneje.si nima kar vse avtomatizirano in imajo v končni fazi tudi ljudi, ki urejajo vsebino.
@HotBurek: Sam sem imel idejo izdelat neko čist enostavno Android aplikacijo za primerjanje cen hrane, ampak se mi kar hitro potem ni več dalo :) Mogoče bi mi bilo lažje v skupini. Je pa IMHO ful neizkoriščenega potenciala tu, npr. zakaj bi moral človek gledat vse te prospekte od Mercatorja, Hoferja, Eurospina in ostalih trgovcev. Saj točno vem, kaj od hrane rabim, zato hočem imeti app v katerem zavedem, katera hrana me zanima in naj me ta app avtomatično obvešča o "killer deals".
To pregledovanje reklamnih letakov in iskanje akcij je eno nepotrebno zabijanje časa, ki ga nimam.
HotBurek ::
youPlonker, za točko 2 bi dodal še PhantomJS in Selenium. Za točko 3; vsa tri podjetja imajo podatke dostopne preko HTTP GET klica, ki vrača JSON.
Tisto z skeniranje reklamnih letakov bi se mogoče dalo rešit drugače;
- kot prvo, lahko da so izdelki tako ali tako vnešeni v database kot "v akciji 10%" itn. (kolikor sem gledal za špar/mercator, je tako, tuš ima pa tako svojo kategorijo za izdelke v akciji)
- kot drugo, prospekt se lahko dobi v pdf obliki in potem python prebere vrednosti
Pa še za začetek, da je bolj enostavno in da lahko stran hitreje raste, bi za vsak produkt zbral (zgolj) sledeče lastnosti:
- title (BUREK S SIROM SPAR, 940G)
- image ( )
- price (4,99 EUR)
- date (2020-02-23, to je datum, ko je produkt na zadnje bil "viden", čekira se pa vsak dan)
- shop (Špar)
- link ( https://www.spar.si/online/burek-s-siro... )
In potem, recimo za začetek search funkcija.
youPlonker, a ti bi znal naredit Android aplikacijo?
Da še dodam glede akcije (ter cene skozi čas) za Špar, primer za artikel 499002:
Tisto z skeniranje reklamnih letakov bi se mogoče dalo rešit drugače;
- kot prvo, lahko da so izdelki tako ali tako vnešeni v database kot "v akciji 10%" itn. (kolikor sem gledal za špar/mercator, je tako, tuš ima pa tako svojo kategorijo za izdelke v akciji)
- kot drugo, prospekt se lahko dobi v pdf obliki in potem python prebere vrednosti
Pa še za začetek, da je bolj enostavno in da lahko stran hitreje raste, bi za vsak produkt zbral (zgolj) sledeče lastnosti:
- title (BUREK S SIROM SPAR, 940G)
- image ( )
- price (4,99 EUR)
- date (2020-02-23, to je datum, ko je produkt na zadnje bil "viden", čekira se pa vsak dan)
- shop (Špar)
- link ( https://www.spar.si/online/burek-s-siro... )
In potem, recimo za začetek search funkcija.
youPlonker, a ti bi znal naredit Android aplikacijo?
Da še dodam glede akcije (ter cene skozi čas) za Špar, primer za artikel 499002:
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
Zgodovina sprememb…
- spremenilo: HotBurek ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Pametno nakupovanje (strani: 1 2 )Oddelek: Loža | 12925 (10624) | HappyPills |
» | Agrokor v stečaj? (strani: 1 2 3 )Oddelek: Problemi človeštva | 25016 (21533) | arnecan1 |
» | Android preverjanje cene artiklov (strani: 1 2 3 )Oddelek: Programska oprema | 19336 (10626) | dacker |
» | Slovenski jogurt v Hoferju cenejši kot v Mercatorju (strani: 1 2 3 4 5 6 )Oddelek: Loža | 59957 (44725) | cholt45 |
» | Kje kupujem in zakajOddelek: Kaj kupiti | 4755 (4035) | fosil |