Graži sriuba

Vaikų mazgų su gražia sriuba radimas

Vaikų mazgų su gražia sriuba radimas
Žiniatinklio grandymo užduotis reikalauja suprasti, kaip tinklalapiai yra struktūrizuoti. Norint gauti reikiamą informaciją iš tinklalapių, reikia suprasti tinklalapių struktūrą, išanalizuoti žymas, kuriose yra reikalinga informacija, ir tada tų žymų atributus.

Pradedantiesiems žiniatinklio grandymo su „BeautifulSoup“ pradedantiesiems straipsnį, kuriame aptariamos žiniatinklio grandymo su šia galinga biblioteka sąvokos, galite rasti čia.

Šis straipsnis skirtas programuotojams, duomenų analitikams, mokslininkams ar inžinieriams, kurie jau turi įgūdžių išgauti turinį iš tinklalapių naudodami „BeautifulSoup“. Jei neturite jokių žinių apie šią biblioteką, patariu pereiti pamoką „BeautifulSoup“ pradedantiesiems.

Dabar galime tęsti - noriu tikėti, kad jau turite šią biblioteką.  Jei ne, galite tai padaryti naudodami žemiau esančią komandą:

„pip“ įdiekite „BeautifulSoup4“

Kadangi dirbame su duomenų išgaunimu iš HTML, turime turėti pagrindinį HTML puslapį, kuriame galėtume praktikuoti šias sąvokas.  Šiame straipsnyje mes naudosime šį HTML fragmentą praktikai. Aš ketinu priskirti šį HTML fragmentą kintamajam naudodamas trigubas „Python“ kabutes.

sample_content = "" "

„LinuxHint“



Norėdami sudaryti nesutvarkytą sąrašą, naudojama ul žyma:
 




Norėdami sudaryti užsakytą sąrašą, naudojama ol žyma:
 


    Pateikiame sąrašą pagal užsakymą
  1. Numeris vienas

  2. Antras numeris



„Linux“ užuomina, 2018 m



"" "

Dabar, kai tai sutvarkėme, pereikime prie darbo su „BeautifulSoup“ biblioteka.

Mes ketiname naudoti keletą metodų ir atributų, kuriuos mes paskambintume į „BeautifulSoup“ objektą. Tačiau mes turėtume analizuoti savo eilutę naudodami „BeautifulSoup“ ir paskui priskirti kintamajam „our_soup“.

iš bs4 importuokite BeautifulSoup kaip bso
our_soup = bso (sample_content, "lxml")

Nuo šiol mes dirbsime su „our_soup“ kintamuoju ir jame kvietėme visus savo atributus ar metodus.

Trumpai tariant, jei dar nežinote, kas yra vaiko mazgas, tai iš esmės yra mazgas (žyma), egzistuojantis kito mazgo viduje. Pavyzdžiui, mūsų HTML fragmente „li“ žymos yra „ul“ ir „ol“ žymų vaikų mazgai.

Štai metodai, kuriuos mes pažvelgtume:

findChild ():

The rastiVaiką metodas naudojamas pirmajam HTML elementų antriniam mazgui rasti. Pavyzdžiui, pažiūrėję į savo „ol“ arba „ul“ žymas, joje rasime dvi vaikų žymas. Tačiau kai mes naudojame rastiVaiką metodas, jis grąžina tik pirmąjį mazgą kaip antrąjį mazgą.

Šis metodas gali pasirodyti labai naudingas, kai norime gauti tik pirmąjį HTML elemento antrinį mazgą, nes jis iškart pateikia reikiamą rezultatą.

Grąžintas objektas yra tokio tipo bs4.elementas.Žyma. Iš jo galime išskleisti tekstą, paskambinę ant jo teksto atributui.

Štai pavyzdys:

first_child = mūsų_supa.rasti („kūnas“).rasti („ol“)
spausdinti (first_child.findChild ())

Aukščiau pateiktas kodas grąžins:

  • Numeris vienas
  • Norėdami gauti tekstą iš žymos, mes vadiname teksto atributas ant jo.

    Kaip:

    spausdinti (first_child.findChild ().tekstas)

    Norėdami gauti šį rezultatą:

    'Numeris vienas'
    rastiVaikai ():

    Mes pažvelgėme į rastiVaiką metodą ir pamatė, kaip jis veikia. The rastiVaikai metodas veikia panašiai, tačiau, kaip rodo pavadinimas, jis neranda tik vieno vaiko mazgo, jis gauna visus vaikų mazgelius žymoje.

    Kai reikia pažymėti visus vaikų mazgus, pažymėkite rastiVaikai metodas yra kelias. Šis metodas pateikia visus vaikų mazgus sąraše. Galite pasiekti savo pasirinktą žymą naudodami jos indekso numerį.

    Štai pavyzdys:

    first_child = mūsų_supa.rasti („kūnas“).rasti („ol“)
    spausdinti (first_child.rastiVaikai ()

    Tai grąžins vaikų mazgus sąraše:

    [
  • Numeris vienas
  • ,
  • Antras numeris
  • ]

    Norėdami gauti antrą vaiko mazgą sąraše, šį kodą atliks:

    spausdinti (first_child.rastiVaikai () [1])

    Norėdami gauti šį rezultatą:

  • Antras numeris
  • Tai viskas, ką „BeautifulSoup“ teikia kalbant apie metodus. Tačiau tuo viskas nesibaigia. Atributus taip pat galima iškviesti mūsų „BeautifulSoup“ objektuose, kad gautumėte vaiko / vaikų / palikuonių mazgą iš HTML elemento.

    turinys:

    Kol rastiVaikai metodas atliko nesudėtingą vaikų mazgų ištraukimo darbą turinį atributai daro kažką šiek tiek kitokio.

    The turinį atributas pateikia viso HTML elemento turinio sąrašą, įskaitant vaikų mazgus. Taigi, kai paskambinsite turinį objekto „BeautifulSoup“ atributas grąžins tekstą kaip eilutes, o žymų mazgus - kaip bs4.elementas.Žyma objektas.

    Štai pavyzdys:

    first_child = mūsų_supa.rasti („kūnas“).rasti („ol“)
    spausdinti (first_child.turinys)

    Tai grąžina:

    ["\ n Čia yra surikiuotas sąrašas \ n",
  • Numeris vienas
  • ,
    „\ n“,
  • Antras numeris
  • , „\ n“]

    Kaip matote, sąraše yra tekstas, einantis prieš vaiko mazgą, vaiko mazgas ir tekstas, pateiktas po vaiko mazgo.

    Norėdami pasiekti antrą antrinį mazgo mazgą, turime tik pasinaudoti jo indekso numeriu, kaip parodyta žemiau:

    spausdinti (first_child.turinys [3])

    Tai grąžintų:

  • Antras numeris
  • vaikai:

    Čia yra vienas atributas, kuris daro beveik tą patį, ką ir turinio atributas. Tačiau jis turi vieną nedidelį skirtumą, kuris gali padaryti didžiulį poveikį (tiems, kurie rimtai vertina kodo optimizavimą).

    Atributas „vaikai“ taip pat pateikia tekstą, pateiktą prieš vaiko mazgą, patį vaiko mazgą ir tekstą, pateiktą po vaiko mazgo. Čia skirtumas yra tas, kad jis grąžina juos kaip generatorių, o ne sąrašą.

    Pažvelkime į šį pavyzdį:

    first_child = mūsų_supa.rasti („kūnas“).rasti („ol“)
    spausdinti (first_child.vaikai)

    Aukščiau pateiktas kodas suteikia šiuos rezultatus (jūsų kompiuteryje nurodytas adresas neturi sutapti su toliau pateiktu):

    Kaip matote, jis pateikia tik generatoriaus adresą. Šį generatorių galėtume konvertuoti į sąrašą.

    Tai galime pamatyti toliau pateiktame pavyzdyje:

    first_child = mūsų_supa.rasti („kūnas“).rasti („ol“)
    spausdinti (sąrašas (pirmasis_vaikas.vaikai))

    Tai duoda tokį rezultatą:

    ["\ n Čia yra surikiuotas sąrašas \ n",
  • Numeris vienas
  • ,
    „\ n“,
  • Antras numeris
  • , „\ n“]

    palikuonys:

    Kol vaikai atributas veikia gaunant tik turinį žymos viduje, t.e. tekstas ir mazgai pirmajame lygyje palikuonys atributas gilinasi ir daro daugiau.

    The palikuonys atributas gauna visą tekstą ir mazgus, esančius vaikų mazguose. Taigi jis negrąžina tik vaikų mazgų, bet ir anūkų mazgų.

    Be teksto ir žymų grąžinimo, jis taip pat grąžina žymų turinį kaip eilutes.

    Visai kaip vaikai atributas, palikuonys pateikia savo rezultatus kaip generatorius.

    Tai galime pamatyti žemiau:

    first_child = mūsų_supa.rasti („kūnas“).rasti („ol“)
    spausdinti (first_child.palikuonys)

    Tai duoda tokį rezultatą:

    Kaip matėme anksčiau, tada galime konvertuoti šį generatoriaus objektą į sąrašą:

    first_child = mūsų_supa.rasti („kūnas“).rasti („ol“)
    spausdinti (sąrašas (pirmasis_vaikas.palikuonys)

    Mes gautume žemiau pateiktą sąrašą:

    ["\ n Čia yra surikiuotas sąrašas \ n",
  • Numeris vienas
  • ,
    „Numeris vienas“, „\ n“,
  • Antras numeris
  • , „Antras numeris“, „\ n“]

    Išvada

    Čia jūs turite penkis skirtingus būdus, kaip pasiekti vaikų mazgus HTML elementuose. Gali būti ir daugiau būdų, tačiau šiame straipsnyje aptartais metodais ir atributais turėtų būti galima pasiekti bet kurio HTML elemento antrinį mazgą.

    Pelės kairiuoju pelės mygtuku mygtukas neveikia „Windows 10“
    Jei naudojate specialią pelę su savo nešiojamuoju kompiuteriu arba staliniu kompiuteriu, tačiau neveikia pelės kairysis mygtukas dėl tam tikrų priežas...
    Žymeklis peršoka arba juda atsitiktinai, kai rašote „Windows 10“
    Jei pastebite, kad pelės žymeklis peršoka arba juda pats, automatiškai, atsitiktinai, kai vedate „Windows“ nešiojamąjį kompiuterį ar kompiuterį, kai k...
    Kaip pakeisti pelės ir jutiklinių plokščių slinkimo kryptį sistemoje „Windows 10“
    Pelė ir Jutiklinė dalisTai ne tik palengvina skaičiavimus, bet ir efektyvesnį bei mažiau laiko reikalaujantį. Mes neįsivaizduojame gyvenimo be šių pri...