A Tutorial From Semalt: Scraping Web In Python

Thug mé cuairt ar KinoPoisk (leagan Rúisis de IMDB) le déanaí agus fuair mé amach gur éirigh liom thar 1000 scannán a rátáil thar na blianta. Shíl mé go mbeadh sé suimiúil taighde níos mionsonraithe a dhéanamh ar na sonraí seo: an bhfuil aon athrú ar mo chuid cách scannáin le himeacht ama? Cé na séasúir den bhliain a mbím ag faire ar níos mó scannáin?
Ach sula ndéanaimid anailís agus tógáil ar ghrafaic áille, caithfimid na sonraí a fháil. Ar an drochuair, níl API poiblí ag go leor seirbhísí, mar sin caithfidh tú do mhuinchillí a rolladh suas agus na leathanaigh html a pharsáil.
Tá an t-alt seo beartaithe dóibh siúd a bhí i gcónaí ag iarraidh foghlaim conas Scrapping Gréasáin a úsáid ach nach bhfuair a lámha air nó nach raibh a fhios acu cá háit le tosú.
Tasc
Is é an tasc atá againn na sonraí faoi scannáin a chonacthas cheana a bhaint: teideal an scannáin, dáta agus am an fhaire, rátáil an úsáideora.
Déanta na fírinne, beidh ár gcuid oibre le déanamh i 2 chéim:
Céim 1: leathanaigh html a íoslódáil agus a shábháil
Céim 2: parse html i bhformáid atá oiriúnach le haghaidh anailíse breise (csv, json, pandas dataframe etc.)
Ionstraimí
Tá go leor leabharlanna python ann chun http-iarratais a sheoladh. Is é an ceann is cáiliúla agus an-áisiúil ná Iarrataí.
Is gá freisin leabharlann a roghnú le haghaidh parsáil html.
BeatifulSoup, lxml

Is iad seo an dá leabharlann is mó a bhfuil tóir orthu chun html a pharsáil agus is rogha phearsanta amháin ceann acu a roghnú. Thairis sin, tá dlúthbhaint ag na leabharlanna seo lena chéile: Thosaigh BeautifulSoup ag úsáid lxml mar pharsálaí inmheánach le haghaidh luasghéarú, agus i lxml, cuireadh modúl soupparser leis. Chun na cineálacha cur chuige a chur i gcomparáid, roinnfidh mé na sonraí le BeautifulSoup agus úsáidim roghnóirí XPath sa mhodúl lxml.html.
Sonraí a Íoslódáil
Tosaímid ag íoslódáil sonraí. Ar dtús, déanaimis iarracht an leathanach a fháil trí url agus é a shábháil ar chomhad áitiúil.
Osclaímid an comhad a leanann é agus feicimid nach bhfuil sé chomh simplí sin: mheas an láithreán gur robot muid agus ní thaispeánfaidh sé na sonraí.
Faighimis amach conas a oibríonn an suíomh
Níl aon fhadhb ag an mbrabhsálaí faisnéis a fháil ón suíomh. Feicfimid cé chomh díreach agus a sheolann sé an iarraidh. Chun seo a dhéanamh bainimid úsáid as an bpainéal “Líonra” sna “Uirlisí Forbróra” sa bhrabhsálaí (úsáidim Firebug chuige seo), de ghnáth, is é an iarraidh a theastaíonn uainn an ceann is faide.
Mar a fheicimid, seolann an brabhsálaí chuig ceanntásca UserAgent, fianán agus líon eile paraiméadair. Ar dtús, déanfaimid iarracht UserAgent ceart a sheoladh chuig ceanntásc.
An uair seo éiríonn linn, agus anois tugtar na sonraí riachtanacha dúinn. Ní miste a rá go seiceálann an suíomh bailíocht fianán uaireanta, agus sa chás sin cabhróidh seisiúin sa leabharlann Iarrataí.
Íoslódáil Gach Ráta
Anois táimid in ann leathanach amháin a shábháil le rátaí. Ach de ghnáth bíonn go leor rátaí ag an úsáideoir, agus is gá é a aithris trí gach leathanach. Is furasta uimhir an leathanaigh a bhfuil spéis againn inti a aistriú go díreach chuig an url.
Sonraí a Bhailiú Ó Html
Anois déanaimis go díreach na sonraí a bhailiú ó html. Is é an bealach is éasca le tuiscint a fháil ar struchtúr an leathanaigh html ná an fheidhm "Inspect element" a úsáid sa bhrabhsálaí. Sa chás seo, tá gach rud simplí go leor: tá an tábla iomlán le rátaí sa chlib. Roghnaigh an nód seo:
ó bs4 allmhairiú BeautifulSoup
ó lxml import html
# Anraith Álainn
anraith = BeautifulSoup (téacs)
film_list = soup.find ('div', ('class': 'profileFilmsList'))
# lxml
crann = html.fromstring (téacs)
film_list_lxml = tree.xpath ('// div [@class =' 'profileFilmList' ']') [0]

Foghlaímid conas teideal Rúisis an scannáin a tharraingt amach agus nasc chuig leathanach an scannáin (freisin conas an téacs agus luach na tréithe a fháil).
Más gá duit teideal a bhaint as Béarla ní gá ach "nameRus" a athrú go "nameEng".
Torthaí
D’fhoghlaimíomar conas láithreáin ghréasáin a pharsáil, chuir muid aithne ar Iarrataí leabharlanna, BeautifulSoup, agus lxml, chomh maith le sonraí a fuarthas a bhí oiriúnach chun anailís bhreise a dhéanamh ar scannáin a chonacthas cheana ar KinoPoisk.