Raaputa verkkosivusto tällä kauniilla keitto -Python -opetusohjelmalla

Raaputa verkkosivusto tällä kauniilla keitto -Python -opetusohjelmalla

Beautiful Soup on avoimen lähdekoodin Python-kirjasto. Se käyttää navigoivia jäsentäjiä XML- ja HTML -tiedostojen sisällön kaappaamiseen. Tarvitset tietoja useisiin analyyttisiin tarkoituksiin. Kuitenkin, jos olet uusi Pythonissa ja verkkokaaviossa, Pythonin Beautiful Soup -kirjasto kannattaa kokeilla web -kaavintaprojektissa.





Pythonin avoimen lähdekoodin Beautiful Soup -kirjaston avulla voit saada tietoja raapimalla minkä tahansa verkkosivun osan tai elementin hallitsemalla prosessia mahdollisimman hyvin. Tässä artikkelissa tarkastelemme, kuinka voit käyttää kaunista keittoa verkkosivuston raaputtamiseen.





Kuinka asentaa kaunis keitto ja aloittaa sen käyttö

Ennen kuin jatkamme, tässä Beautiful Soup -opetusohjelmassa käytämme Python 3: ta ja kaunis keitto4 , Beautiful Soupin uusin versio. Varmista, että sinä Luo Python -virtuaalinen ympäristö eristääksesi projektisi ja sen paketit paikallisen koneesi paketeista.





miten tekijänoikeus kuviini

Aloita asentamalla Beautiful Soup -kirjasto virtuaaliseen ympäristöön. Beautiful Soup on saatavana PyPi -paketina kaikille käyttöjärjestelmille, joten voit asentaa sen pip asenna kaunis soup4 komento päätelaitteen kautta.

Kuitenkin, jos käytät Debiania tai Linuxia, yllä oleva komento toimii edelleen, mutta voit asentaa sen paketinhallinnan avulla suorittamalla apt-get install python3-bs4 .



Kaunis keitto ei kaavi URL -osoitteita suoraan. Se toimii vain valmiiden HTML- tai XML-tiedostojen kanssa. Tämä tarkoittaa, että et voi siirtää URL -osoitetta suoraan siihen. Tämän ongelman ratkaisemiseksi sinun on hankittava kohdesivuston URL -osoite Pythonin pyyntökirjastolla, ennen kuin syötät sen Beautiful Soupille.

Jotta tämä kirjasto olisi käytettävissä kaavimellesi, suorita pip -asennuspyynnöt komento päätelaitteen kautta.





Jos haluat käyttää XML -jäsennyskirjastoa, suorita pip asenna lxml asentaaksesi sen.

Tarkista Web -sivu, jonka haluat raapia

Ennen kuin raaputat verkkosivuja, joita et tunne, paras käytäntö on tarkistaa niiden elementit. Voit tehdä tämän vaihtamalla selaimesi kehittäjätilaan. Se on aika helppoa käytä Chrome DevToolsia jos käytät Google Chromea.





Verkkosivu on kuitenkin tarkastettava, jotta saat lisätietoja sen HTML -tunnisteista, määritteistä, luokista ja tunnuksista. Tämä paljastaa verkkosivun ydinosat ja sen sisältötyypit.

Se auttaa myös sinua kehittämään parhaat strategiat, joiden avulla voit saada tarkkoja tietoja verkkosivustolta ja miten voit saada ne.

Kuinka raaputtaa verkkosivustojen tiedot kauniilla keitolla

Nyt kun sinulla on kaikki valmiina, avaa ensisijainen koodieditori ja luo uusi Python -tiedosto, joka antaa sille valitun nimen. Voit kuitenkin myös hyödyntää verkkopohjaisia ​​IDE-laitteita, kuten Jupyter Notebook jos et tunne Pythonin käyttämistä komentorivin kautta.

Tuo sitten tarvittavat kirjastot:

from bs4 import BeautifulSoup
import requests

Katsotaanpa ensin, kuinka pyyntökirjasto toimii:

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

Kun suoritat yllä olevan koodin, se palauttaa 200 -tilan, mikä osoittaa, että pyyntösi on onnistunut. Muussa tapauksessa saat 400 -tilan tai jonkin muun virhetilan, joka osoittaa epäonnistuneen GET -pyynnön.

Muista korvata aina suluissa oleva verkkosivuston URL -osoite kohde -URL -osoitteellasi.

Kun saat verkkosivuston saada pyynnöstä, välität sen sitten Beautiful Soupille, joka voi nyt lukea sisällön HTML- tai XML-tiedostoina käyttämällä sisäänrakennettua XML- tai HTML-jäsennintä valitsemastasi muodosta riippuen.

Katso tämä seuraava koodinpätkä nähdäksesi, miten tämä tehdään HTML -jäsennyksellä:

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

Yllä oleva koodi palauttaa verkkosivun koko DOM: n sisällön kanssa.

Voit myös saada tasaisemman version DOMista käyttämällä koristella menetelmä. Voit kokeilla tätä nähdäksesi sen tuloksen:

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

Voit myös saada verkkosivun puhtaan sisällön lataamatta sen elementtiä .teksti menetelmä:

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

Verkkosivun sisällön kaapiminen tagin nimen perusteella

Voit myös raaputtaa tietyn tunnisteen sisällön Beautiful Soupilla. Tätä varten sinun on sisällytettävä kohdetunniste kauniiseen keittokaavinpyyntöön.

Katsotaanpa esimerkiksi, miten voit saada sisällön h2 verkkosivun tunnisteet.

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

Yllä olevassa koodinpätkässä keitto. h2 palauttaa ensimmäisen h2 verkkosivun elementti ja jättää muut huomiotta. Voit ladata kaikki h2 elementtejä, voit käyttää find_all sisäänrakennettu toiminto ja varten Python -silmukka:

amazon -tilausta ei vastaanotettu, mutta esitykset toimitettiin
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)

Tämä koodilohko palauttaa kaikki h2 elementit ja niiden sisältö. Voit kuitenkin saada sisällön lataamatta tunnistetta käyttämällä .merkkijono menetelmä:

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)

Voit käyttää tätä menetelmää mille tahansa HTML -tunnisteelle. Sinun tarvitsee vain vaihtaa h2 merkitse haluamasi.

Voit kuitenkin kaavata lisää tunnisteita siirtämällä luettelon tunnisteita find_all menetelmä. Esimerkiksi alla oleva koodilohko raaputtaa sisällön kohteeseen , h2 ja otsikko tunnisteet:

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)

Verkkosivun kaapiminen tunnuksen ja luokan nimen avulla

Kun olet tarkastanut verkkosivuston DevToolsin avulla, se antaa sinulle lisätietoja kaikista tunnus- ja luokkaattribuuteista, jotka sisältävät kukin elementti sen DOM: ssä. Kun sinulla on kyseinen tieto, voit raapia sen verkkosivun tällä menetelmällä. Siitä on hyötyä, kun kohdekomponentin sisältö toistuu tietokannasta.

Voit käyttää löytö menetelmä id- ja luokkakaaville. toisin kuin find_all menetelmä, joka palauttaa toistettavan objektin, löytö menetelmä toimii yhdellä, ei-iteroitavalla kohteella, joka on id tässä tapauksessa. Joten sinun ei tarvitse käyttää varten silmukka sen kanssa.

Katsotaanpa esimerkkiä siitä, kuinka voit raaputtaa alla olevan sivun sisällön tunnuksen avulla:

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)

Voit tehdä tämän luokan nimen korvaamalla id kanssa luokka . Kuitenkin kirjoittaminen luokka aiheuttaa suoraan syntaksin sekaannusta, koska Python näkee sen avainsanana. Virheen ohittamiseksi sinun on kirjoitettava alaviiva luokan eteen seuraavasti: luokka_ .

Pohjimmiltaan rivistä, joka sisältää tunnuksen, tulee:

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

Voit kuitenkin raaputtaa verkkosivun myös kutsumalla tietyn tunnisteen nimen vastaavalla tunnuksella tai luokalla:

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

Kuinka tehdä uudelleenkäytettävä kaavin kauniilla keitolla

Voit luoda luokan ja koota kaikki aikaisemmat koodit kyseisen luokan funktioksi, jotta voit luoda uudelleenkäytettävän kaavin, joka hakee joidenkin tagien sisällön ja niiden tunnukset. Voimme tehdä tämän luomalla funktion, joka hyväksyy viisi argumenttia: URL -osoitteen, kaksi tunnisteen nimeä ja niitä vastaavat tunnukset tai luokat.

Oletetaan, että haluat kaataa paitojen hinnan verkkokauppasivustolta. Alla oleva esimerkkikaavinluokka poimii hinta- ja paitatunnisteet vastaavilla tunnuksilla tai luokilla ja palauttaa sen sitten Pandas -tietokehykseksi, jossa sarakkeen nimi on Hinta ja Paidan_nimi.

Varmista, että sinä pip asentaa pandoja terminaalin kautta, jos et ole jo tehnyt niin.

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

Juuri tekemäsi kaavin on uudelleenkäytettävä moduuli ja voit tuoda sen ja käyttää sitä toisessa Python -tiedostossa. Soittaaksesi raaputa funktiota luokastaan, käytät scrapeit.scrape ('Verkkosivuston URL -osoite', 'hinta_tagi', 'hintatunnus', 'paita_tagi', 'paidan_tunnus') . Jos et anna URL -osoitetta ja muita parametreja, muu lausunto kehottaa sinua tekemään niin.

Jos haluat käyttää scaperia toisessa Python -tiedostossa, voit tuoda sen seuraavasti:

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

Huomautus: kaavin_moduuli on kaavinluokkaa pitävän Python -tiedoston nimi.

Voit myös tarkistaa Kaunis keitto -dokumentaatio jos haluat sukeltaa syvemmälle siihen, miten voit hyödyntää sitä parhaalla mahdollisella tavalla.

Kaunis keitto on arvokas Web -kaavintatyökalu

Beautiful Soup on tehokas Python -näytön kaavin, jonka avulla voit hallita, miten tietosi kulkevat kaapimisen aikana. Se on arvokas liiketoimintatyökalu, koska se voi antaa sinulle pääsyn kilpailijoiden verkkotietoihin, kuten hinnoitteluun, markkinatrendeihin ja muuhun.

virhe kansion sisällön käytössä ei lähetetty

Vaikka olemme tehneet tässä artikkelissa tunnisteiden kaavin, voit silti leikkiä tällä tehokkaalla Python -kirjastolla hyödyllisten kaavintatyökalujen luomiseksi.

Jaa Jaa Tweet Sähköposti Parhaat Web -kaavintatyökalut verkossa

Haluatko kerätä tietoja verkkosivustoilta analyyttisiin tarkoituksiin? Nämä web -kaavintatyökalut tekevät siitä helppoa.

Lue seuraava
Liittyvät aiheet
  • Ohjelmointi
  • Python
Kirjailijasta Idisou Omisola(94 artikkelia julkaistu)

Idowu on intohimoinen kaikkeen älykkääseen tekniikkaan ja tuottavuuteen. Vapaa -ajallaan hän leikkii koodauksella ja vaihtaa shakkilaudalle, kun on kyllästynyt, mutta hän myös rakastaa irtautumista rutiinista silloin tällöin. Hänen intohimonsa näyttää ihmisille tie modernin tekniikan ympärillä motivoi häntä kirjoittamaan enemmän.

Lisää Idowu Omisolasta

tilaa uutiskirjeemme

Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e -kirjoja ja ainutlaatuisia tarjouksia!

Klikkaa tästä tilataksesi