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.