БеаутифулСоуп

Проналажење дечијих чворова са прелепом супом

Проналажење дечијих чворова са прелепом супом
Задатак стругања на вебу је онај који захтева разумевање структуре веб страница. Да бисте добили потребне информације са веб страница, треба разумети структуру веб страница, анализирати ознаке које садрже потребне информације, а затим атрибуте тих ознака.

За почетнике у стругању веба помоћу БеаутифулСоуп-а, чланак који расправља о концептима стругања по мрежи са овом моћном библиотеком може се наћи овде.

Овај чланак је намењен програмерима, аналитичарима података, научницима или инжењерима који већ поседују вештину издвајања садржаја са веб страница помоћу БеаутифулСоуп. Ако немате никакво знање о овој библиотеци, саветујем вам да прођете кроз лекције БеаутифулСоуп за почетнике.

Сада можемо да наставимо - желим да верујем да сте већ инсталирали ову библиотеку.  Ако не, то можете учинити помоћу наредбе испод:

пип инсталирајте БеаутифулСоуп4

Будући да радимо на издвајању података из ХТМЛ-а, морамо да имамо основну ХТМЛ страницу на којој ћемо увежбавати ове концепте.  За овај чланак бисмо користили овај ХТМЛ исечак за вежбање. Следећи ХТМЛ исечак ћу доделити променљивој користећи троструке наводнике у Питхону.

сампле_цонтент = "" "

ЛинукХинт



За прављење неуређене листе користи се ул ознака:
 




За израду уређене листе користи се ознака ол:
 


    Ево уређене листе
  1. Број један

  2. Број два



Линук Хинт, 2018



"" "

Сад кад смо то средили, пређимо одмах на рад са библиотеком БеаутифулСоуп.

Користићемо неколико метода и атрибута које бисмо позивали на наш објект БеаутифулСоуп. Међутим, морали бисмо да рашчланимо наш низ користећи БеаутифулСоуп, а затим доделимо променљивој „оур_соуп“.

из бс4 увози БеаутифулСоуп као бсо
оур_соуп = бсо (сампле_цонтент, "лкмл")

Од сада бисмо радили са променљивом „оур_соуп“ и позивали бисмо све наше атрибуте или методе на њу.

У краткој напомени, ако већ не знате шта је подређени чвор, то је у основи чвор (ознака) који постоји унутар другог чвора. На пример, у нашем ХТМЛ исечку, ознаке ли су подређени чворови ознака „ул“ и „ол“.

Ево метода које бисмо погледали:

финдЦхилд ():

Тхе финдЦхилд метода се користи за проналажење првог подређеног чвора ХТМЛ елемената. На пример, када погледамо наше ознаке „ол“ или „ул“, у њима бисмо пронашли две подређене ознаке. Међутим, када користимо финдЦхилд метода, враћа само први чвор као подређени чвор.

Ова метода би се могла показати врло корисном када желимо да добијемо само први подређени чвор ХТМЛ елемента, јер одмах враћа тражени резултат.

Враћени објекат је типа бс4.елемент.Таг. Текст из њега можемо извући позивањем атрибута текста на њему.

Ево примера:

фирст_цхилд = оур_соуп.пронађи ("тело").пронађи ("ол")
испис (фирст_цхилд.финдЦхилд ())

Горњи код би вратио следеће:

  • Број један
  • Да бисмо добили текст из ознаке, називамо текст атрибут на њему.

    Као:

    испис (фирст_цхилд.финдЦхилд ().текст)

    Да бисте добили следећи резултат:

    'Број један'
    финдЦхилдрен ():

    Погледали смо финдЦхилд метода и видели како то функционише. Тхе финдЦхилдрен метода функционише на сличне начине, међутим, као што и само име говори, не налази само један подређени чвор, већ добија све подређене чворове у ознаци.

    Када требате да све подређене чворове уврстите у ознаку, финдЦхилдрен метода је пут којим треба ићи. Ова метода враћа све подређене чворове на листи. Ознаци по вашем избору можете приступити помоћу њеног индексног броја.

    Ево примера:

    фирст_цхилд = оур_соуп.пронађи ("тело").пронађи ("ол")
    испис (фирст_цхилд.финдЦхилдрен ())

    То би вратило подређене чворове на листи:

    [
  • Број један
  • ,
  • Број два
  • ]

    Да би се добио други подређени чвор на листи, посао би обавио следећи код:

    испис (фирст_цхилд.финдЦхилдрен () [1])

    Да бисте добили следећи резултат:

  • Број два
  • То је све што нуди БеаутифулСоуп што се тиче метода. Међутим, ту се не завршава. Атрибути се такође могу позивати на нашим објектима БеаутифулСоуп да би дете / деца / потомак чвор добили из ХТМЛ елемента.

    садржај:

    Док финдЦхилдрен метода обавила је једноставан посао извлачења дечијих чворова, садржај атрибути чине нешто мало другачије.

    Тхе садржај атрибут враћа листу целокупног садржаја у ХТМЛ елементу, укључујући подређене чворове. Па кад позовете садржај атрибут на објекту БеаутифулСоуп, враћао би текст као низове, а чворове у ознакама као бс4.елемент.Таг објект.

    Ево примера:

    фирст_цхилд = оур_соуп.пронађи ("тело").пронађи ("ол")
    испис (фирст_цхилд.садржај)

    Ово враћа следеће:

    ["\ н Ево уређене листе \ н",
  • Број један
  • ,
    '\ н',
  • Број два
  • , '\ н']

    Као што видите, листа садржи текст који долази испред подређеног чвора, подређеног чвора и текста који долази иза подређеног чвора.

    Да бисмо приступили другом подређеном чвору, све што треба да урадимо је да користимо његов индексни број као што је приказано доле:

    испис (фирст_цхилд.садржај [3])

    Ово би вратило следеће:

  • Број два
  • деца:

    Ево једног атрибута који ради готово исто што и атрибут садржаја. Међутим, има једна мала разлика која би могла да има огроман утицај (за оне који оптимизацију кода схватају озбиљно).

    Атрибут цхилдрен такође враћа текст који долази испред подређеног чвора, самог подређеног чвора и текст који долази након подређеног чвора. Овде је разлика у томе што их враћа као генератор уместо као листу.

    Погледајмо следећи пример:

    фирст_цхилд = оур_соуп.пронађи ("тело").пронађи ("ол")
    испис (фирст_цхилд.деца)

    Горњи код даје следеће резултате (адреса на вашем рачунару не мора да се подудара са оном доле):

    Као што видите, враћа само адресу генератора. Могли бисмо овај генератор претворити у листу.

    То можемо видети у доњем примеру:

    фирст_цхилд = оур_соуп.пронађи ("тело").пронађи ("ол")
    принт (лист (фирст_цхилд.деца))

    Ово даје следећи резултат:

    ["\ н Ево уређене листе \ н",
  • Број један
  • ,
    '\ н',
  • Број два
  • , '\ н']

    потомци:

    Док деца атрибут ради на томе да се само садржај унутар ознаке и.е. текст и чворови на првом нивоу, потомци атрибут иде дубље и чини више.

    Тхе потомци атрибут добија сав текст и чворове који постоје у подређеним чворовима. Дакле, не враћа само чворове деце, враћа и чворове унучади.

    Поред враћања текста и тагова, он такође враћа садржај у таговима као низове.

    Баш као и деца атрибут, потомци враћа своје резултате као генератор.

    Ово можемо видети у наставку:

    фирст_цхилд = оур_соуп.пронађи ("тело").пронађи ("ол")
    испис (фирст_цхилд.потомци)

    Ово даје следећи резултат:

    Као што смо раније видели, овај објекат генератора можемо претворити у листу:

    фирст_цхилд = оур_соуп.пронађи ("тело").пронађи ("ол")
    принт (лист (фирст_цхилд.потомци))

    Добили бисмо доњу листу:

    ["\ н Ево уређене листе \ н",
  • Број један
  • ,
    'Број један', '\ н',
  • Број два
  • , 'Број два', '\ н']

    Закључак

    Ето вам, пет различитих начина за приступ подређеним чворовима у ХТМЛ елементима. Могло би бити и више начина, међутим помоћу метода и атрибута о којима се говори у овом чланку требало би бити могуће приступити подређеном чвору било ког ХТМЛ елемента.

    Како да обрнете смер померања миша и додирних табли у оперативном систему Виндовс 10
    Миш и Тоуцхпадрачунарство не само да олакшава рад, већ и ефикасније и мање времена. Не можемо замислити живот без ових уређаја, али ипак је чињеница д...
    Како променити показивач миша и величину, боју и шему курсора на Виндовс 10
    Показивач миша и курсор у оперативном систему Виндовс 10 су врло важни аспекти оперативног система. То се може рећи и за друге оперативне системе, так...
    Бесплатни и отворени кодни покретачки програми за развој Линук игара
    Овај чланак ће обухватити листу бесплатних покретача игара отвореног кода који се могу користити за развој 2Д и 3Д игара на Линуку. Бројни су такви мо...