За почетнике у стругању веба помоћу БеаутифулСоуп-а, чланак који расправља о концептима стругања по мрежи са овом моћном библиотеком може се наћи овде.
Овај чланак је намењен програмерима, аналитичарима података, научницима или инжењерима који већ поседују вештину издвајања садржаја са веб страница помоћу БеаутифулСоуп. Ако немате никакво знање о овој библиотеци, саветујем вам да прођете кроз лекције БеаутифулСоуп за почетнике.
Сада можемо да наставимо - желим да верујем да сте већ инсталирали ову библиотеку. Ако не, то можете учинити помоћу наредбе испод:
пип инсталирајте БеаутифулСоуп4Будући да радимо на издвајању података из ХТМЛ-а, морамо да имамо основну ХТМЛ страницу на којој ћемо увежбавати ове концепте. За овај чланак бисмо користили овај ХТМЛ исечак за вежбање. Следећи ХТМЛ исечак ћу доделити променљивој користећи троструке наводнике у Питхону.
сампле_цонтент = "" "
За прављење неуређене листе користи се ул ознака:
- Прва опција
- Друга опција
Ево неуређене листе
За израду уређене листе користи се ознака ол:
- Број један
- Број два
Ево уређене листе
Линук Хинт, 2018
"" "
Сад кад смо то средили, пређимо одмах на рад са библиотеком БеаутифулСоуп.
Користићемо неколико метода и атрибута које бисмо позивали на наш објект БеаутифулСоуп. Међутим, морали бисмо да рашчланимо наш низ користећи БеаутифулСоуп, а затим доделимо променљивој „оур_соуп“.
из бс4 увози БеаутифулСоуп као бсооур_соуп = бсо (сампле_цонтент, "лкмл")
Од сада бисмо радили са променљивом „оур_соуп“ и позивали бисмо све наше атрибуте или методе на њу.
У краткој напомени, ако већ не знате шта је подређени чвор, то је у основи чвор (ознака) који постоји унутар другог чвора. На пример, у нашем ХТМЛ исечку, ознаке ли су подређени чворови ознака „ул“ и „ол“.
Ево метода које бисмо погледали:
- финдЦхилд
- финдЦхилдрен
- садржај
- деца
- потомци
финдЦхилд ():
Тхе финдЦхилд метода се користи за проналажење првог подређеног чвора ХТМЛ елемената. На пример, када погледамо наше ознаке „ол“ или „ул“, у њима бисмо пронашли две подређене ознаке. Међутим, када користимо финдЦхилд метода, враћа само први чвор као подређени чвор.
Ова метода би се могла показати врло корисном када желимо да добијемо само први подређени чвор ХТМЛ елемента, јер одмах враћа тражени резултат.
Враћени објекат је типа бс4.елемент.Таг. Текст из њега можемо извући позивањем атрибута текста на њему.
Ево примера:
фирст_цхилд = оур_соуп.пронађи ("тело").пронађи ("ол")испис (фирст_цхилд.финдЦхилд ())
Горњи код би вратио следеће:
Да бисмо добили текст из ознаке, називамо текст атрибут на њему.
Као:
испис (фирст_цхилд.финдЦхилд ().текст)Да бисте добили следећи резултат:
'Број један'финдЦхилдрен ():
Погледали смо финдЦхилд метода и видели како то функционише. Тхе финдЦхилдрен метода функционише на сличне начине, међутим, као што и само име говори, не налази само један подређени чвор, већ добија све подређене чворове у ознаци.
Када требате да све подређене чворове уврстите у ознаку, финдЦхилдрен метода је пут којим треба ићи. Ова метода враћа све подређене чворове на листи. Ознаци по вашем избору можете приступити помоћу њеног индексног броја.
Ево примера:
фирст_цхилд = оур_соуп.пронађи ("тело").пронађи ("ол")испис (фирст_цхилд.финдЦхилдрен ())
То би вратило подређене чворове на листи:
[Да би се добио други подређени чвор на листи, посао би обавио следећи код:
испис (фирст_цхилд.финдЦхилдрен () [1])Да бисте добили следећи резултат:
То је све што нуди БеаутифулСоуп што се тиче метода. Међутим, ту се не завршава. Атрибути се такође могу позивати на нашим објектима БеаутифулСоуп да би дете / деца / потомак чвор добили из ХТМЛ елемента.
садржај:
Док финдЦхилдрен метода обавила је једноставан посао извлачења дечијих чворова, садржај атрибути чине нешто мало другачије.
Тхе садржај атрибут враћа листу целокупног садржаја у ХТМЛ елементу, укључујући подређене чворове. Па кад позовете садржај атрибут на објекту БеаутифулСоуп, враћао би текст као низове, а чворове у ознакама као бс4.елемент.Таг објект.
Ево примера:
фирст_цхилд = оур_соуп.пронађи ("тело").пронађи ("ол")испис (фирст_цхилд.садржај)
Ово враћа следеће:
["\ н Ево уређене листе \ н",'\ н',
Као што видите, листа садржи текст који долази испред подређеног чвора, подређеног чвора и текста који долази иза подређеног чвора.
Да бисмо приступили другом подређеном чвору, све што треба да урадимо је да користимо његов индексни број као што је приказано доле:
испис (фирст_цхилд.садржај [3])Ово би вратило следеће:
деца:
Ево једног атрибута који ради готово исто што и атрибут садржаја. Међутим, има једна мала разлика која би могла да има огроман утицај (за оне који оптимизацију кода схватају озбиљно).
Атрибут цхилдрен такође враћа текст који долази испред подређеног чвора, самог подређеног чвора и текст који долази након подређеног чвора. Овде је разлика у томе што их враћа као генератор уместо као листу.
Погледајмо следећи пример:
фирст_цхилд = оур_соуп.пронађи ("тело").пронађи ("ол")испис (фирст_цхилд.деца)
Горњи код даје следеће резултате (адреса на вашем рачунару не мора да се подудара са оном доле):
Као што видите, враћа само адресу генератора. Могли бисмо овај генератор претворити у листу.
То можемо видети у доњем примеру:
фирст_цхилд = оур_соуп.пронађи ("тело").пронађи ("ол")принт (лист (фирст_цхилд.деца))
Ово даје следећи резултат:
["\ н Ево уређене листе \ н",'\ н',
потомци:
Док деца атрибут ради на томе да се само садржај унутар ознаке и.е. текст и чворови на првом нивоу, потомци атрибут иде дубље и чини више.
Тхе потомци атрибут добија сав текст и чворове који постоје у подређеним чворовима. Дакле, не враћа само чворове деце, враћа и чворове унучади.
Поред враћања текста и тагова, он такође враћа садржај у таговима као низове.
Баш као и деца атрибут, потомци враћа своје резултате као генератор.
Ово можемо видети у наставку:
фирст_цхилд = оур_соуп.пронађи ("тело").пронађи ("ол")испис (фирст_цхилд.потомци)
Ово даје следећи резултат:
Као што смо раније видели, овај објекат генератора можемо претворити у листу:
фирст_цхилд = оур_соуп.пронађи ("тело").пронађи ("ол")принт (лист (фирст_цхилд.потомци))
Добили бисмо доњу листу:
["\ н Ево уређене листе \ н",'Број један', '\ н',
Закључак
Ето вам, пет различитих начина за приступ подређеним чворовима у ХТМЛ елементима. Могло би бити и више начина, међутим помоћу метода и атрибута о којима се говори у овом чланку требало би бити могуће приступити подређеном чвору било ког ХТМЛ елемента.