Kā instalēt skaistu zupu un izmantot to tīmekļa kasīšanas projektos?

Mūsdienu uz datiem balstītajā pasaulē tradicionālā manuālās datu vākšanas metode ir novecojusi. Dators ar interneta pieslēgumu uz katra galda padarīja tīmekli par milzīgu datu avotu. Tādējādi efektīvāka un laikietilpīgāka mūsdienu datu vākšanas metode ir tīmekļa skrāpēšana. Un, kad runa ir par tīmekļa nokasīšanu, Python ir rīks ar nosaukumu Beautiful Soup. Šajā ziņojumā es jums pastāstīšu par Beautiful Soup instalēšanas darbībām, lai sāktu darbu ar tīmekļa skrāpēšanu.

Pirms instalēšanas un darba ar Beautiful Soup, noskaidrosim, kāpēc jums tas būtu jādara.

Kas ir skaista zupa?

Izliksimies, ka pētāt “COVID ietekmi uz cilvēku veselību” un esat atradis dažas tīmekļa lapas, kurās ir atbilstoši dati. Bet ko darīt, ja viņi nepiedāvā viena klikšķa lejupielādes iespēju, lai aizņemtos savus datus? Šeit spēlē Skaistā zupa.

Beautiful Soup ir viens no Python bibliotēku indeksiem, lai izvilktu datus no atlasītajām vietnēm. Ērtāk ir izgūt datus no HTML vai XML lapām.

Leonards Ričardsons 2004. gadā nāca klajā ar ideju par Skaisto zupu tīmekļa skrāpēšanai. Taču viņa ieguldījums projektā turpinās arī šodien. Viņš savā Twitter kontā ar lepnumu atjaunina katru skaistās zupas jauno izlaidumu.

Lai gan Beautiful Soup tīmekļa skrāpēšanai tika izstrādāta, izmantojot Python 3.8, tā lieliski darbojas gan ar Python 3, gan ar Python 2.4.

Bieži vien vietnes izmanto captcha aizsardzību, lai glābtu savus datus no AI rīkiem. Šādā gadījumā dažas izmaiņas “User-agent” galvenē rīkā Beautiful Soup vai izmantojot Captcha risināšanas API var atdarināt uzticamu pārlūkprogrammu un apmānīt noteikšanas rīku.

Tomēr, ja jums nav laika izpētīt Skaisto zupu vai vēlaties, lai skrāpēšana tiktu veikta efektīvi un ērti, noteikti pārbaudiet šo tīmekļa skrāpēšanas API, kurā varat vienkārši norādīt URL un iegūt datus Tavas rokas.

  10 labi resursi lielo datu un Hadoop apguvei

Ja jau esat programmētājs, skaistas zupas izmantošana skrāpēšanai nebūs biedējoša, jo tā ir vienkāršā sintakse, navigējot tīmekļa lapās un iegūstot vēlamos datus, pamatojoties uz nosacījumu parsēšanu. Tajā pašā laikā tas ir draudzīgs arī iesācējiem.

Lai gan Skaistā zupa nav paredzēta uzlabotai skrāpēšanai, tā vislabāk darbojas, lai iztīrītu datus no failiem, kas rakstīti iezīmēšanas valodās.

Skaidra un detalizēta dokumentācija ir vēl viens cepums, ko Skaistā zupa iepako.

Atradīsim vienkāršu veidu, kā dabūt skaistu zupu savā mašīnā.

Kā instalēt skaistu zupu tīmekļa skrāpēšanai?

Pip — 2008. gadā izstrādātais Python pakotņu pārvaldnieks, kas izstrādāts bez piepūles, tagad ir standarta rīks izstrādātāju vidū, lai instalētu Python bibliotēkas vai atkarības.

Pip tiek nodrošināts pēc noklusējuma, instalējot jaunākās Python versijas. Tādējādi, ja jūsu sistēmā ir instalētas jaunākās Python versijas, varat to darīt.

Atveriet komandu uzvedni un ierakstiet šo pip komandu, lai uzreiz instalētu skaisto zupu.

pip install beautifulsoup4

Displejā redzēsit kaut ko līdzīgu šim ekrānuzņēmumam.

Pārliecinieties, vai esat atjauninājis PIP instalēšanas programmu uz jaunāko versiju, lai izvairītos no bieži sastopamām kļūdām.

Komanda pip instalēšanas programmas atjaunināšanai uz jaunāko versiju ir šāda:

pip install --upgrade pip

Šajā ziņojumā esam veiksmīgi aptvēruši pusi.

Tagad jūsu ierīcē ir instalēta programma Beautiful Soup, tāpēc pievērsīsimies tam, kā to izmantot tīmekļa skrāpēšanai.

Kā importēt un strādāt ar skaistu zupu tīmekļa skrāpēšanai?

Savā python IDE ierakstiet šo komandu, lai pašreizējā python skriptā importētu skaistu zupu.

from bs4 import BeautifulSoup

Tagad skaistā zupa atrodas jūsu Python failā, lai to izmantotu skrāpēšanai.

Apskatīsim koda piemēru, lai uzzinātu, kā iegūt vēlamos datus ar skaisto zupu.

Mēs varam likt skaistajai zupai meklēt konkrētus HTML tagus avota vietnē un nokasīt šajos tagos esošos datus.

Šajā rakstā es izmantošu marketwatch.com, kas atjaunina dažādu uzņēmumu akciju cenas reāllaikā. Izvilksim dažus datus no šīs vietnes, lai iepazītos ar Skaistās zupas bibliotēku.

Importējiet “pieprasījumu” pakotni, kas ļaus mums saņemt HTTP pieprasījumus un atbildēt uz tiem, un “urllib”, lai ielādētu tīmekļa lapu no tās URL.

from urllib.request import urlopen
import requests

Saglabājiet tīmekļa lapas saiti mainīgajā, lai vēlāk varētu tai viegli piekļūt.

url="https://www.marketwatch.com/investing/stock/amzn"

Nākamais būtu izmantot “urlopen” metodi no “urllib” bibliotēkas, lai saglabātu HTML lapu mainīgajā. Nosūtiet URL funkcijai “urlopen” un saglabājiet rezultātu mainīgajā.

page = urlopen(url)

Izveidojiet Skaistas zupas objektu un parsējiet vajadzīgo tīmekļa lapu, izmantojot “html.parser”.

soup_obj = BeautifulSoup(page, 'html.parser')

Tagad viss atlasītās tīmekļa lapas HTML skripts tiek saglabāts mainīgajā “soup_obj”.

  WebSphere 8.5.x dinamiskais klasteris

Pirms turpināt, apskatīsim atlasītās lapas avota kodu, lai uzzinātu vairāk par HTML skriptu un tagiem.

Ar peles labo pogu noklikšķiniet jebkurā tīmekļa lapas vietā. Pēc tam jūs atradīsit pārbaudes opciju, kā parādīts zemāk.

Noklikšķiniet uz pārbaudīt, lai skatītu avota kodu.

Iepriekš minētajā avota kodā varat atrast tagus, klases un precīzāku informāciju par katru elementu, kas redzams vietnes saskarnē.

“Atrast” metode skaistajā zupā ļauj mums meklēt pieprasītos HTML tagus un izgūt datus. Lai to izdarītu, mēs piešķiram klases nosaukumu un atzīmes metodei, kas iegūst konkrētus datus.

Piemēram, “Amazon.com Inc.” tīmekļa lapā parādītajam klases nosaukums: ‘company__name’ ir atzīmēts zem ‘h1’. Mēs varam ievadīt šo informāciju ‘atrašanas’ metodē, lai attiecīgo HTML fragmentu izvilktu mainīgajā.

name = soup_obj.find('h1', attrs={'class': 'company__name'})

Izvadīsim mainīgajā “name” saglabāto HTML skriptu un vajadzīgo tekstu uz ekrāna.

print(name)

print(name.text)

Jūs varat redzēt, kā iegūtie dati tiek izdrukāti uz ekrāna.

Web Nokasiet IMDb vietni

Daudzi no mums pirms filmas skatīšanās meklē filmu vērtējumus IMBb vietnē. Šī demonstrācija sniegs jums visaugstāk novērtēto filmu sarakstu un palīdzēs jums pierast pie skaistās zupas tīmeklī.

1. darbība. Importējiet skaisto zupu un pieprasījumu bibliotēkas.

from bs4 import BeautifulSoup
import requests

2. darbība. Piešķirsim URL, kuru vēlamies nokasīt, mainīgajam ar nosaukumu “url”, lai kodā būtu viegli piekļūt.

“Pieprasījumu” pakotne tiek izmantota, lai iegūtu HTML lapu no URL.

url = requests.get('https://www.imdb.com/search/title/?count=100&groups=top_1000&sort=user_rating')

3. darbība. Šajā koda fragmentā mēs parsēsim pašreizējā URL HTML lapu, lai izveidotu skaistas zupas objektu.

soup_obj = BeautifulSoup(url.text, 'html.parser')

Mainīgais “soup_obj” tagad satur visu vajadzīgās tīmekļa lapas HTML skriptu, kā parādīts nākamajā attēlā.

  Kā lejupielādēt filmas un TV pārraides skatīšanai bezsaistē pakalpojumā Netflix

Pārbaudīsim tīmekļa lapas avota kodu, lai atrastu HTML skriptu datiem, kurus vēlamies nokasīt.

Novietojiet kursoru virs tīmekļa lapas elementa, kuru vēlaties izvilkt. Pēc tam ar peles labo pogu noklikšķiniet uz tā un dodieties uz pārbaudes opciju, lai skatītu konkrētā elementa pirmkodu. Tālāk sniegtie vizuālie materiāli palīdzēs jums labāk.

Klases “lister-list” satur visus visaugstāk novērtētos ar filmām saistītos datus kā apakšnodaļas secīgos div tagos.

Katras filmas kartītes HTML skriptā zem klases “lister-item mode-advanced” ir tags “h3”, kas saglabā filmas nosaukumu, rangu un izlaišanas gadu, kā norādīts tālāk esošajā attēlā.

Piezīme. “Atrast” metode skaistajā zupā meklē pirmo tagu, kas atbilst tai piešķirtajam ievades nosaukumam. Atšķirībā no “atrast”, metode “find_all” meklē visus tagus, kas atbilst norādītajai ievadei.

4. darbība. Varat izmantot metodes “atrast” un “find_all”, lai saraksta mainīgajā saglabātu katras filmas nosaukuma, ranga un gada HTML skriptu.

top_movies = soup_obj.find('div',attrs={'class': 'lister-list'}).find_all('h3')

5. darbība. Pārskatiet mainīgajā “top_movies” saglabāto filmu sarakstu un izņemiet katras filmas nosaukumu, rangu un gadu teksta formātā no tās HTML skripta, izmantojot tālāk norādīto kodu.

for movie in top_movies:
    movi_name = movie.a.text
    rank = movie.span.text.rstrip('.')
    year = movie.find('span', attrs={'class': 'lister-item-year text-muted unbold'})
    year = year.text.strip('()')
    print(movi_name + " ", rank+ " ", year+ " ")

Izvades ekrānuzņēmumā varat redzēt filmu sarakstu ar to nosaukumu, rangu un izlaišanas gadu.

Varat bez pūlēm pārvietot izdrukātos datus Excel lapā ar kādu python kodu un izmantot to analīzei.

Nobeiguma vārdi

Šī ziņa palīdzēs jums instalēt skaistu zupu tīmekļa skrāpēšanai. Turklāt manis parādītajiem skrāpēšanas piemēriem vajadzētu palīdzēt jums sākt darbu ar Skaisto zupu.

Tā kā jūs interesē, kā instalēt Beautiful Soup tīmekļa skrāpēšanai, es ļoti iesaku jums iepazīties ar šo saprotamo rokasgrāmatu, lai uzzinātu vairāk par tīmekļa skrāpēšanu, izmantojot Python.