Kraapige veebisait selle kauni supppythoni õpetusega

Kraapige veebisait selle kauni supppythoni õpetusega

Beautiful Soup on avatud lähtekoodiga Pythoni raamatukogu. See kasutab navigeerivaid parsereid XML- ja HTML -failide sisu kraapimiseks. Te vajate andmeid mitmetel analüütilistel eesmärkidel. Kui aga olete Pythonis ja veebi kraapimises uus, tasub Pythoni Beautiful Soup raamatukogu proovida veebi kraapimisprojekti jaoks.





Pythoni avatud lähtekoodiga kauni supi kogu abil saate andmeid hankida, kraapides veebilehe mis tahes osa või elementi, kontrollides protsessi maksimaalselt. Selles artiklis vaatleme, kuidas saate veebisaidi kraapimiseks kasutada kaunist suppi.





Kuidas kaunist suppi paigaldada ja sellega alustada

Enne jätkamist kasutame selles ilusa supi õpetuse artiklis Python 3 ja ilus supp 4 , Ilusa supi uusim versioon. Veenduge, et teie luua Pythoni virtuaalne keskkond et eraldada oma projekt ja selle paketid kohaliku masina pakettidest.





parim ftp klient Windows 10 jaoks

Alustamiseks peate oma virtuaalsesse keskkonda installima raamatukogu Beautiful Soup. Beautiful Soup on saadaval PyPi paketina kõikidele operatsioonisüsteemidele, nii et saate selle installida koos pip install ilus soup4 käsku terminali kaudu.

Kui kasutate Debianit või Linuxit, töötab ülaltoodud käsk siiski, kuid saate selle installida paketihalduri abil apt-get install python3-bs4 .



Ilus supp ei kraabi URL -e otse. See töötab ainult valmis HTML- või XML-failidega. See tähendab, et te ei saa URL -i otse sellesse edastada. Selle probleemi lahendamiseks peate enne Beautiful Soupile söötmist hankima siht veebisaidi URL -i koos Pythoni päringuteekiga.

Selle kogu kasutamiseks kaabitsa jaoks kättesaadavaks, käivitage pip installimise taotlused käsku terminali kaudu.





XML -i parseriteegi kasutamiseks käivitage pip install lxml selle installimiseks.

Kontrollige veebilehte, mida soovite kraapida

Enne mis tahes veebisaidi, mida te ei tunne, kraapimist on hea tava kontrollida selle elemente. Seda saate teha, lülitades brauseri arendaja režiimi. See on päris lihtne kasutage Chrome DevToolsi kui kasutate Google Chrome'i.





Siiski on vaja veebilehte kontrollida, et saada rohkem teavet selle HTML -siltide, atribuutide, klasside ja ID -de kohta. See paljastab veebilehe põhielemendid ja selle sisutüübid.

Samuti aitab see välja töötada parimad strateegiad, mida saate kasutada veebisaidilt soovitud andmete saamiseks ja nende hankimiseks.

Kuidas kraapida veebisaitide andmeid ilusa supiga

Nüüd, kui olete kõik valmis ja valmis, avage eelistatud koodiredaktor ja looge uus Pythoni fail, andes sellele valitud nime. Siiski saate ka kasutage veebipõhiseid IDE-sid, nagu Jupyter Notebook kui te pole tuttav Pythoni käitamisega käsurealt.

Seejärel importige vajalikud teegid:

from bs4 import BeautifulSoup
import requests

Kõigepealt vaatame, kuidas päringuteek töötab:

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

Kui käivitate ülaltoodud koodi, tagastab see oleku 200, mis näitab, et teie taotlus on edukas. Vastasel juhul kuvatakse olek 400 või mõni muu veaseisund, mis viitab ebaõnnestunud GET -päringule.

Ärge unustage alati sulgudes oleva veebisaidi URL -i oma siht -URL -iga asendada.

Kui olete veebisaidi hankinud saada taotluse, edastate selle seejärel Beautiful Soupile, kes saab olenevalt teie valitud vormingust nüüd sisu lugeda HTML- või XML-failidena, kasutades sisseehitatud XML-i või HTML-parserit.

Vaadake seda järgmist koodilõiku, et näha, kuidas seda HTML -parseriga teha:

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

Ülaltoodud kood tagastab veebilehe kogu DOM koos sisuga.

DOM -i joondatud versiooni saate ka kasutades pretendeerima meetod. Selle väljundi nägemiseks võite seda proovida:

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

Samuti saate veebisaidi puhta sisu ilma selle elementi laadimata .tekst meetod:

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

Kuidas kraapida veebilehe sisu sildi nime järgi

Ilusa supi abil saate ka konkreetse sildi sisu kraapida. Selleks peate lisama kauni sildi kaabitsa taotlusse sihtmärgi nime.

Näiteks vaatame, kuidas saate kausta sisu hankida h2 veebilehe sildid.

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

Ülaltoodud koodilõigus supp.h2 tagastab esimese h2 veebilehe elementi ja ignoreerib ülejäänud osa. Et laadida kõik h2 elemente, saate kasutada leida kõik sisseehitatud funktsioon ja eest Pythoni silmus:

kuidas teada androidis ühendatud wifi parooli
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)

See koodiplokk tagastab kõik h2 elemendid ja nende sisu. Siiski saate sisu ilma märgendit laadimata hankida, kasutades .string meetod:

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)

Seda meetodit saate kasutada mis tahes HTML -märgendi jaoks. Kõik, mida pead tegema, on asendada h2 märkige see, mis teile meeldib.

Siiski saate ka rohkem silte kraapida, edastades siltide loendi kausta leida kõik meetod. Näiteks kraabib allolev koodiplokk sisu et , h2 ja tiitel sildid:

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)

Kuidas veebisaiti kraapida, kasutades ID -d ja klassi nime

Pärast veebisaidi kontrollimist DevToolsi abil annab see teile rohkem teavet id ja klassi atribuutide kohta, mis hoiavad iga elementi oma DOM -is. Kui olete selle teabe saanud, saate selle meetodi abil selle veebisaidi kraapida. See on kasulik, kui sihtkomponendi sisu on andmebaasist välja lülitatud.

Võite kasutada leida ID ja klassi kaabitsa meetod. Erinevalt leida kõik meetod, mis tagastab korduva objekti, leida meetod töötab ühe, mitte-itereeritava sihtmärgi kallal, milleks on id sel juhul. Niisiis, te ei pea seda kasutama eest silmus sellega.

Vaatame näidet selle kohta, kuidas saate allpool oleva lehe sisu kraapida, kasutades id:

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)

Selle tegemiseks klassi nime jaoks asendage id koos klassi . Kirjutades siiski klassi põhjustab otseselt süntaksi segadust, kuna Python näeb seda märksõnana. Sellest veast mööda hiilimiseks peate klassi ette kirjutama alljoone järgmiselt: klass_ .

Sisuliselt saab ID -d sisaldav rida järgmiselt:

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

Siiski saate veebilehte ka kraapida, helistades konkreetsele sildi nimele selle vastava ID või klassiga.

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

Kuidas valmistada korduvkasutatavat kaabitsat ilusa supiga

Saate luua klassi ja panna kogu eelmise koodi selle klassi funktsiooniks, et teha korduvkasutatav kaabits, mis saab mõne sildi sisu ja nende ID -d. Me saame seda teha, luues funktsiooni, mis aktsepteerib viit argumenti: URL, kaks märgendi nime ja neile vastavad ID -d või klassid.

Oletame, et soovite e-kaubanduse veebisaidilt särkide hinna välja kraapida. Allolev näitekaabitsa klass ekstraheerib hinna- ja särgisildid koos nende vastavate ID -de või klassidega ning tagastab selle seejärel Pandase andmeraamina, mille veerunimed on „Hind” ja Särgi_nimi.

Veenduge, et teie pip install pandad terminali kaudu, kui te pole seda juba teinud.

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

Äsja valmistatud kaabits on korduvkasutatav moodul ning saate selle importida ja kasutada mõnes teises Pythoni failis. Et helistada kraapima funktsiooni oma klassist, kasutate scrapeit.scrape ('Veebisaidi URL', 'hinna_tag', 'hinna_id', 'särgi_tag', 'särgi_id') . Kui te URL -i ja muid parameetreid ei esita, siis muidu avaldus palub teil seda teha.

Selle scaperi kasutamiseks teises Pythoni failis saate selle importida järgmiselt.

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

Märge: kaabits_moodul on kaabitsa klassi hoidva Pythoni faili nimi.

Samuti saate kontrollida Ilus suppi dokumentatsioon kui soovite sügavamalt sukelduda sellesse, kuidas seda kõige paremini ära kasutada.

Ilus supp on väärtuslik veebi kraapimise tööriist

Beautiful Soup on võimas Pythoni ekraanikaabits, mis annab teile kontrolli selle üle, kuidas teie andmed kraapimise ajal läbi tulevad. See on väärtuslik ärivahend, kuna see annab teile juurdepääsu konkurentide veebiandmetele, nagu hinnakujundus, turusuundumused ja palju muud.

kas keegi võib mulle Facebookis sõnumi saata, kui ma välja lülitan

Kuigi oleme selles artiklis märgendite kaabitsa teinud, saate selle võimsa Pythoni kogu abil siiski kasulikumate kraapimisvahendite tegemiseks ringi mängida.

Jaga Jaga Piiksuma E -post Parimad veebipõhised kraapimisvahendid veebis

Kas teil on vaja analüütilistel eesmärkidel veebisaitidelt andmeid koguda? Need veebi kraapimisvahendid muudavad selle lihtsaks.

Loe edasi
Seotud teemad
  • Programmeerimine
  • Python
Autori kohta Idisou Omisola(Avaldatud 94 artiklit)

Idowu on kirglik kõige nutika tehnoloogia ja tootlikkuse vastu. Vabal ajal mängib ta kodeerimisega ja lülitab malelauale, kui tal on igav, kuid talle meeldib ka aeg -ajalt rutiinist lahti saada. Tema kirg näidata inimestele teed kaasaegses tehnoloogias motiveerib teda rohkem kirjutama.

Veel Idowu Omisolast

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin