Strgnite spletno mesto s tem čudovitim poukom Python

Strgnite spletno mesto s tem čudovitim poukom Python

Beautiful Soup je odprtokodna knjižnica Python. Za razčlenjevanje vsebine datotek XML in HTML uporablja razčlenjevalce za krmarjenje. Podatke potrebujete za več analitičnih namenov. Če pa ste novi v Pythonu in spletnem strganju, je knjižnico Beautiful Soup Python vredno preizkusiti za projekt strganja po spletu.





Z odprtokodno knjižnico Beautiful Soup knjižnice Python lahko dobite podatke tako, da počistite kateri koli del ali element spletne strani z največjim nadzorom nad procesom. V tem članku preučujemo, kako lahko uporabite Lepo juho za strganje spletnega mesta.





Kako namestiti čudovito juho in začeti z njo

Preden nadaljujemo, bomo v tem vadniškem članku Beautiful Soup uporabili Python 3 in beautifulsoup4 , najnovejša različica Beautiful Soup. Prepričajte se, da ste ustvarite navidezno okolje Python za ločitev vašega projekta in njegovih paketov od tistih na vašem lokalnem računalniku.





naj prenesem 64 ali 32 bit

Za začetek morate v virtualno okolje namestiti knjižnico Beautiful Soup. Beautiful Soup je na voljo kot paket PyPi za vse operacijske sisteme, zato ga lahko namestite z pip install beautifulsoup4 ukaz preko terminala.

Če pa uporabljate Debian ali Linux, zgornji ukaz še vedno deluje, vendar ga lahko z upraviteljem paketov namestite tako, da ga zaženete apt-get install python3-bs4 .



Lepa juha ne strga URL -jev neposredno. Deluje samo s pripravljenimi datotekami HTML ali XML. To pomeni, da ne morete neposredno poslati URL -ja. Če želite rešiti to težavo, morate dobiti URL ciljnega spletnega mesta s knjižnico zahtev Python, preden ga pošljete v Beautiful Soup.

Če želite, da je ta knjižnica na voljo za vaše strgalo, zaženite datoteko zahteve za namestitev pipa ukaz preko terminala.





Če želite uporabiti knjižnico razčlenjevalnika XML, zaženite pip install lxml da ga namestite.

Preglejte spletno stran, ki jo želite pobrisati

Preden odstranite katero koli spletno mesto, ki ga ne poznate, je najbolje, da pregledate njegove elemente. To lahko storite tako, da brskalnik preklopite v način razvijalca. Precej enostavno je uporabite Chrome DevTools če uporabljate Google Chrome.





Vendar je treba spletno stran pregledati, če želite izvedeti več o njenih oznakah HTML, atributih, razredih in ID -jih. S tem se razkrijejo osnovni elementi spletne strani in njene vrste vsebine.

Prav tako vam pomaga razviti najboljše strategije, s katerimi lahko dobite natančne podatke, ki jih želite s spletnega mesta, in kako jih lahko dobite.

Kako pobrisati podatke spletnih mest z lepo juho

Zdaj, ko imate vse pripravljeno, odprite želeni urejevalnik kode in ustvarite novo datoteko Python ter ji dajte izbrano ime. Lahko pa tudi uporabite spletne IDE, kot je Jupyter Notebook če niste seznanjeni z izvajanjem Pythona prek ukazne vrstice.

Nato uvozite potrebne knjižnice:

from bs4 import BeautifulSoup
import requests

Najprej poglejmo, kako deluje knjižnica zahtev:

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

Ko zaženete zgornjo kodo, vrne stanje 200, kar kaže, da je vaša zahteva uspešna. V nasprotnem primeru dobite status 400 ali kakšno drugo stanje napake, ki označuje neuspešno zahtevo GET.

Ne pozabite, da URL spletnega mesta v oklepaju vedno zamenjate s svojim ciljnim URL -jem.

Ko dobite spletno mesto z dobiti zahtevo, jo nato posredujete Beautiful Soup, ki lahko zdaj prebere vsebino kot datoteke HTML ali XML z vgrajenim razčlenjevalnikom XML ali HTML, odvisno od izbrane oblike.

Oglejte si naslednji delček kode, da vidite, kako to storite z razčlenjevalnikom HTML:

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

Zgornja koda vrne celoten DOM spletne strani z njeno vsebino.

Bolj usklajeno različico DOM -a lahko dobite tudi z olepšati metoda. Če želite videti rezultat, lahko poskusite to:

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

Prav tako lahko dobite čisto vsebino spletne strani, ne da bi njen element naložili z .text metoda:

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

Kako strgati vsebino spletne strani po imenu oznake

Vsebino v določeni oznaki lahko tudi strgate z Beautiful Soup. Če želite to narediti, morate v zahtevo za strgalo Beautiful Soup vključiti ime ciljne oznake.

Na primer, poglejmo, kako lahko dobite vsebino v h2 oznake spletne strani.

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

V zgornjem delčku kode, juha.h2 vrne prvega h2 element spletne strani, ostale pa prezre. Če želite naložiti vse h2 elementov, lahko uporabite Najdi vse vgrajeno funkcijo in za zanka Pythona:

povrnitev na prejšnjo različico Chroma
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)

Ta blok kode vrne vse h2 elementi in njihova vsebina. Vsebino pa lahko dobite brez nalaganja oznake z uporabo .vrvica 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)

To metodo lahko uporabite za katero koli oznako HTML. Vse kar morate storiti je, da zamenjate h2 označite s tistim, ki vam je všeč.

Lahko pa tudi označite več oznak, tako da v oznako Najdi vse metoda. Spodnji blok kode na primer strga vsebino do , h2 , in naslov 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 pobrisati spletno stran z ID -jem in imenom razreda

Po pregledu spletnega mesta z orodji DevTools vam omogoča več informacij o atributih id in razreda, ki vsebujejo vsak element v njegovem DOM -u. Ko dobite ta podatek, lahko s to metodo strgate to spletno stran. To je uporabno, če vsebina ciljne komponente izstopa iz baze podatkov.

Uporabite lahko najti metoda za strgala id in razreda. Za razliko od Najdi vse metoda, ki vrne iterabilni predmet, najti metoda deluje na enem samem, ki ga ni mogoče ponoviti, kar je id v tem primeru. Torej vam ni treba uporabljati za zanka z njim.

Poglejmo primer, kako lahko z ID -jem strgate vsebino spodnje strani:

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)

Če želite to narediti za ime razreda, zamenjajte id z razred . Vendar pisanje razred neposredno povzroči zmedo v skladnji, saj jo Python vidi kot ključno besedo. Če želite to napako zaobiti, morate pred razred napisati podčrtaj: razred_ .

V bistvu vrstica, ki vsebuje id, postane:

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

Spletno stran pa lahko tudi strgate tako, da pokličete ime določene oznake z ustreznim ID -jem ali razredom:

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

Kako narediti strgalo za večkratno uporabo z lepo juho

Ustvarite lahko razred in vso prejšnjo kodo združite v funkcijo v tem razredu, da ustvarite strgalo za večkratno uporabo, ki dobi vsebino nekaterih oznak in njihovih ID -jev. To lahko storimo tako, da ustvarimo funkcijo, ki sprejme pet argumentov: URL, dva imena oznak in njihove ustrezne ID -je ali razrede.

Predpostavimo, da želite povleči ceno majic s spletnega mesta e-trgovine. Spodnji razred strgala izvleče oznake cene in majice z ustreznimi identifikacijskimi številkami ali razredi in jih nato vrne kot podatkovni okvir Pandas z 'Cena' in Shirt_name kot imena stolpcev.

Prepričajte se, da ste pip install pande prek terminala, če tega še niste storili.

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!')

Strgalo, ki ste ga pravkar naredili, je modul za večkratno uporabo in ga lahko uvozite in uporabite v drugi datoteki Python. Če želite poklicati strgati funkcijo iz svojega razreda, ki jo uporabljate scrapeit.scrape ('URL spletnega mesta', 'cena_oznaka', 'cena_id', 'majica_oznaka', 'majica_id') . Če ne navedete URL -ja in drugih parametrov, se datoteka drugače izjava vas poziva, da to storite.

Če želite uporabiti ta scaper v drugi datoteki Python, ga lahko uvozite tako:

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

Opomba: scraper_module je ime datoteke Python, ki vsebuje razred strgala.

Preverite lahko tudi Lepa dokumentacija za juho če se želite poglobiti v to, kako to najbolje izkoristiti.

Lepa juha je dragoceno orodje za strganje po spletu

Beautiful Soup je zmogljiv strgalec zaslona Python, ki vam omogoča nadzor nad tem, kako pridejo vaši podatki med strganjem. Je dragoceno poslovno orodje, saj vam lahko omogoči dostop do spletnih podatkov konkurentov, kot so cene, trendi na trgu in drugo.

kako napisati strokovno poročilo

Čeprav smo v tem članku izdelali strgalo za oznake, se lahko s to zmogljivo knjižnico Python še vedno poigrate in naredite bolj uporabna orodja za strganje.

Deliti Deliti Cvrkutati E-naslov Najboljša spletna orodja za strganje

Ali morate zbirati podatke s spletnih mest za analitične namene? Ta orodja za strganje spleta olajšajo delo.

Preberite Naprej
Sorodne teme
  • Programiranje
  • Python
O avtorju Idisou Omisola(94 objavljenih člankov)

Idowu je navdušen nad vsemi pametnimi tehnologijami in produktivnostjo. V prostem času se poigrava s kodiranjem in se, ko mu je dolgčas, preklopi na šahovsko tablo, rad pa se občasno tudi loči od rutine. Njegova strast, da ljudem pokaže pot okoli sodobne tehnologije, ga motivira, da piše več.

Več od Idowu Omisola

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, da se naročite