Očistite web stranicu ovim prekrasnim Python vodičem za juhu

Očistite web stranicu ovim prekrasnim Python vodičem za juhu

Beautiful Soup je Python knjižnica otvorenog koda. Koristi navigacijske parsere za struganje sadržaja XML i HTML datoteka. Podaci su vam potrebni za nekoliko analitičkih svrha. Međutim, ako ste tek počeli s Pythonom i struganjem weba, Pythonova knjižnica Beautiful Soup vrijedi isprobati za projekt struganja weba.





Pomoću Pythonove biblioteke Beautiful Soup s otvorenim kodom možete doći do podataka struganjem bilo kojeg dijela ili elementa web stranice s maksimalnom kontrolom nad procesom. U ovom članku razmatramo kako možete koristiti prekrasnu juhu za struganje web stranice.





Kako instalirati prekrasnu juhu i započeti s njom

Prije nego nastavimo, u ovom tutorial članku Beautiful Soup koristit ćemo Python 3 i beautifulsoup4 , najnovija verzija Beautiful Soup. Uvjerite se da ste stvoriti Python virtualno okruženje kako biste izolirali svoj projekt i njegove pakete od onih na vašem lokalnom računalu.





kako ukloniti drm s kalibrom

Za početak morate instalirati knjižnicu Beautiful Soup u svoje virtualno okruženje. Beautiful Soup dostupan je kao PyPi paket za sve operativne sustave, pa ga možete instalirati sa pip install beautifulsoup4 naredba putem terminala.

Međutim, ako ste na Debianu ili Linuxu, gornja naredba i dalje radi, ali možete je instalirati pomoću upravitelja paketa pokretanjem apt-get install python3-bs4 .



Prekrasna juha ne izriše izravno URL -ove. Radi samo s gotovim HTML ili XML datotekama. To znači da ne možete proslijediti URL izravno u njega. Da biste riješili taj problem, morate nabaviti URL ciljne web stranice s bibliotekom zahtjeva Pythona prije nego što je unesete u Beautiful Soup.

Da biste učinili tu knjižnicu dostupnom za svoj strugač, pokrenite pip zahtjevi za instalaciju naredba putem terminala.





Da biste koristili biblioteku raščlanjivača XML, pokrenite pip install lxml da biste ga instalirali.

Pregledajte web stranicu koju želite izbrisati

Prije brisanja bilo koje web stranice s kojom niste upoznati, najbolja je praksa pregledati njezine elemente. To možete učiniti prebacivanjem preglednika u način za programere. Prilično je lako to učiniti koristite Chrome DevTools ako koristite Google Chrome.





Međutim, potrebno je pregledati web stranicu kako biste saznali više o njezinim HTML oznakama, atributima, klasama i id -ovima. Time se otkrivaju osnovni elementi web stranice i vrste sadržaja.

Također vam pomaže u razvijanju najboljih strategija koje možete koristiti za dobivanje točnih podataka koje želite s web stranice i kako ih možete dobiti.

Kako ostrugati podatke web stranica prekrasnom juhom

Sada kada ste sve pripremili, otvorite željeni uređivač koda i stvorite novu Python datoteku, dajući joj odabrano ime. Međutim, možete i vi koristiti internetske IDE-ove poput Jupyter Notebooka ako niste upoznati s pokretanjem Pythona putem naredbenog retka.

Zatim uvezite potrebne knjižnice:

from bs4 import BeautifulSoup
import requests

Prije svega, da vidimo kako biblioteka zahtjeva funkcionira:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com')
print(website)

Kada pokrenete gornji kôd, on vraća status 200, što znači da je vaš zahtjev uspješan. U suprotnom ćete dobiti status 400 ili neki drugi status pogreške koji ukazuju na neuspjeli GET zahtjev.

Ne zaboravite uvijek zamijeniti URL web stranice u zagradama sa svojim ciljnim URL -om.

Nakon što nabavite web stranicu s dobiti zahtjev, zatim ga prosljeđujete u Beautiful Soup, koji sada može čitati sadržaj u HTML ili XML datoteci pomoću ugrađenog XML ili HTML raščlanjivača, ovisno o odabranom formatu.

Pogledajte sljedeći isječak koda da biste vidjeli kako to učiniti s HTML parserom:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup)

Gornji kôd vraća cijeli DOM web stranice s njezinim sadržajem.

Također možete dobiti usklađeniju verziju DOM -a pomoću uljepšati metoda. Možete isprobati ovo da biste vidjeli njegove rezultate:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.prettify())

Također možete dobiti čisti sadržaj web stranice bez učitavanja njezinog elementa s .tekst metoda:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.text)

Kako sastrugati sadržaj web stranice po nazivu oznake

Također možete sastrugati sadržaj u određenoj oznaci s Beautiful Soup. Da biste to učinili, morate unijeti naziv ciljne oznake u zahtjev za struganje Beautiful Soup.

Na primjer, pogledajmo kako možete dobiti sadržaj u h2 oznake web stranice.

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.h2)

U gornjem isječku koda, juha.h2 vraća prvi h2 element web stranice, a zanemaruje ostatak. Za učitavanje svih h2 elemenata, možete koristiti pronaći_sve ugrađena funkcija i za petlja Pythona:

kako znati je li tvrdi disk mrtav
from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
h2tags = soup.find_all('h2')
for soups in h2tags:
print(soups)

Taj blok koda vraća sve h2 elementi i njihov sadržaj. Međutim, sadržaj možete dobiti bez učitavanja oznake pomoću .niz metoda:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
h2tags = soup.find_all('h2')
for soups in h2tags:
print(soups.string)

Ovu metodu možete koristiti za bilo koju HTML oznaku. Sve što trebate učiniti je zamijeniti h2 označite sa onim koji vam se sviđa.

Međutim, možete i sastrugati više oznaka prosljeđivanjem popisa oznaka u pronaći_sve metoda. Na primjer, blok koda ispod briše sadržaj datoteke do , h2 , i titula oznake:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
tags = soup.find_all(['a', 'h2', 'title'])
for soups in tags:
print(soups.string)

Kako ostrugati web stranicu pomoću ID -a i naziva klase

Nakon pregleda web stranice s DevTools -om, omogućuje vam da saznate više o atributima id -a i klase koji drže svaki element u njegovom DOM -u. Nakon što dobijete taj podatak, možete ostrugati tu web stranicu ovom metodom. Korisno je kada sadržaj ciljne komponente izlazi iz baze podataka.

Možete koristiti pronaći metoda za strugalice za id i klase. Za razliku od pronaći_sve metoda koja vraća iterabilni objekt, pronaći metoda radi na jednom, ne iteriranom cilju, a to je iskaznica u ovom slučaju. Dakle, ne morate koristiti za petlja s njim.

Pogledajmo primjer kako možete sastrugati sadržaj stranice ispod pomoću ID -a:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
id = soup.find(id = 'enter the target id here')
print(id.text)

Da biste to učinili za naziv klase, zamijenite iskaznica s razred . Međutim, pisanje razred izravno dovodi do zabune u sintaksi jer Python to vidi kao ključnu riječ. Da biste zaobišli tu pogrešku, morate napisati podcrtavanje ispred razreda ovako: razred_ .

U biti, redak koji sadrži id postaje:

my_classes = soup.find(class_ = 'enter the target class name here')
print(my_classes.text)

Međutim, web stranicu možete i sastrugati pozivom određene oznake s odgovarajućim ID -om ili klasom:

data = soup.find_all('div', class_ = 'enter the target class name here')
print(data)

Kako napraviti strugač za višekratnu upotrebu s prekrasnom juhom

Možete stvoriti klasu i sastaviti sav prethodni kôd u funkciju u toj klasi kako biste napravili strugač za višekratnu upotrebu koji dobiva sadržaj nekih oznaka i njihove ID -ove. To možemo učiniti stvaranjem funkcije koja prihvaća pet argumenata: URL, dva naziva oznaka i odgovarajuće ID -ove ili klase.

Pretpostavimo da želite skinuti cijenu majica s web stranice e-trgovine. Primjer klase strugača u nastavku izdvaja oznake cijene i košulje s odgovarajućim ID -ovima ili klasama, a zatim ih vraća kao okvir podataka Pandas s 'Cijena' i Shirt_name kao nazive stupaca.

Uvjerite se da ste pip install pande putem terminala ako to već niste učinili.

import pandas as pd
class scrapeit:
try:
def scrape(website=None, tag1=None, id1=None, tag2=None, id2=None):
if not (website and tag1 and id1 and tag2 and id2)==None:
try:
page = requests.get(website)
soup = BeautifulSoup(page.content, 'html.parser')
infotag1 = soup.find_all(tag1, id1)
infotag2 = soup.find_all(tag2, id2)
priced = [prices.text for prices in infotag1]
shirt = [shirts.text for shirts in infotag2]
data = {
'Price':priced,
'Shirt_name':shirt}
info = pd.DataFrame(data, columns=['Price', 'Shirt_name'])
print(info)
except:
print('Not successful')
else:
print('Oops! Please enter a website, two tags and thier corresponding ids')
except:
print('Not successful!')

Strugalica koju ste upravo napravili je modul za višekratnu uporabu i možete ga uvesti i koristiti u drugoj Python datoteci. Da biste nazvali strugati funkciju iz svoje klase, koju koristite scrapeit.scrape ('URL web stranice', 'cijena_oznaka', 'cijena_id', 'majica_oznaka', 'majica_id') . Ako ne navedete URL i druge parametre, drugo izjava od vas traži da to učinite.

Da biste koristili taj scaper u drugoj Python datoteci, možete ga uvesti ovako:

from scraper_module import scrapeit
scrapeit.scrape('URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id')

Bilješka: modul_strugač je naziv Python datoteke koja drži klasu strugača.

Također možete provjeriti Prekrasna dokumentacija za juhu ako želite dublje zaroniti u to kako to možete najbolje iskoristiti.

Prekrasna juha vrijedan je alat za struganje weba

Beautiful Soup moćno je Python strugač zaslona koji vam daje kontrolu nad prolaskom vaših podataka tijekom struganja. To je vrijedan poslovni alat jer vam može omogućiti pristup web podacima konkurenata, kao što su cijene, trendovi na tržištu i drugo.

je li amazonska podzemna aplikacija sigurna

Iako smo u ovom članku napravili strugač oznaka, ipak se možete poigrati s ovom moćnom knjižnicom Python kako biste napravili korisnije alate za struganje.

Udio Udio Cvrkut E -pošta Najbolji mrežni alati za struganje na Internetu

Trebate prikupljati podatke s web stranica u analitičke svrhe? Ovi alati za struganje weba olakšavaju rad.

Pročitajte Dalje
Povezane teme
  • Programiranje
  • Piton
O autoru Idisou Omisola(94 objavljena članka)

Idowu je strastven u bilo čemu pametnom tehnologiji i produktivnosti. U slobodno vrijeme igra se kodiranjem i prebacuje na šahovsku ploču kad mu je dosadno, ali također voli povremeno odmaknuti se od rutine. Njegova strast prema pokazivanju ljudi suvremene tehnologije motivira ga da piše više.

Više od Idowua Omisole

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e -knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu