Kaparjon le egy webhelyet ezzel a gyönyörű leves Python bemutatóval

Kaparjon le egy webhelyet ezzel a gyönyörű leves Python bemutatóval

A Beautiful Soup egy nyílt forráskódú Python könyvtár. Navigációs elemzőket használ az XML és HTML fájlok tartalmának lekaparására. Több elemzési célra van szüksége adatokra. Ha azonban még nem ismeri a Python -ot és a webkaparást, a Python Beautiful Soup könyvtárát érdemes kipróbálni egy webkaparási projekthez.





A Python nyílt forráskódú Beautiful Soup könyvtárával adatokat szerezhet a weboldal bármely részének vagy elemének lekaparásával, a folyamat maximális ellenőrzése mellett. Ebben a cikkben megvizsgáljuk, hogyan használhatja a Gyönyörű levest webhelyek kaparására.





Hogyan telepítsünk gyönyörű levest, és hogyan kezdjünk hozzá

Mielőtt folytatnánk, ebben a gyönyörű leves bemutató cikkben a Python 3 és szép leves4 , a Beautiful Soup legújabb verziója. Győződjön meg arról, hogy Ön hozzon létre egy Python virtuális környezetet hogy elkülönítse a projektet és csomagjait a helyi gépén lévőktől.





vegye birtokba a Windows 10 ingyenes letöltését

A kezdéshez telepítenie kell a Beautiful Soup könyvtárat a virtuális környezetbe. A Beautiful Soup PyPi csomagként minden operációs rendszerhez elérhető, így telepítheti a pip install beautifulsoup4 parancsot a terminálon keresztül.

Ha azonban Debian vagy Linux operációs rendszert használ, a fenti parancs továbbra is működik, de futtatásával telepítheti a csomagkezelővel apt-get install python3-bs4 .



A Beautiful Soup nem kaparja le közvetlenül az URL -eket. Csak kész HTML vagy XML fájlokkal működik. Ez azt jelenti, hogy egy URL -t nem lehet közvetlenül átadni. A probléma megoldásához meg kell szereznie a cél webhely URL -jét a Python kérési könyvtárával, mielőtt betáplálná a Beautiful Soup -hoz.

Ha azt a könyvtárat a kaparó számára szeretné elérhetővé tenni, futtassa a pip telepítési kérelmek parancsot a terminálon keresztül.





Az XML elemzőkönyvtár használatához futtassa pip install lxml telepíteni.

Nézze meg a letörölni kívánt weboldalt

Mielőtt bármilyen webhelyet lekaparna, amelyet nem ismer, a legjobb gyakorlat az elemek ellenőrzése. Ezt a böngésző fejlesztői módba kapcsolásával teheti meg. Elég könnyű használja a Chrome DevTools eszközt ha Google Chrome -ot használ.





Azonban meg kell vizsgálnia egy weboldalt, hogy többet tudjon a HTML -címkéiről, attribútumairól, osztályairól és azonosítóiról. Ezzel felfedheti a weblap alapvető elemeit és tartalomtípusait.

Ezenkívül segít a legjobb stratégiák kidolgozásában, amelyek segítségével pontosan megszerezheti a kívánt adatokat egy webhelyről, és hogyan szerezheti meg azokat.

Hogyan lehet lekaparni egy webhely adatait gyönyörű leves segítségével

Most, hogy mindent készen áll, nyisson meg egy előnyben részesített kódszerkesztőt, és hozzon létre egy új Python -fájlt, megadva a kiválasztott nevet. Azonban azt is megteheti használja a webalapú IDE-ket, például a Jupyter Notebook-ot ha nem ismeri a Python futtatását a parancssoron keresztül.

Ezután importálja a szükséges könyvtárakat:

from bs4 import BeautifulSoup
import requests

Először nézzük meg, hogyan működik a kéréskönyvtár:

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

Amikor futtatja a fenti kódot, 200 -as állapotot ad vissza, jelezve, hogy kérése sikeres. Ellenkező esetben 400 -as állapotot vagy más hibaállapotokat kap, amelyek sikertelen GET kérést jeleznek.

Ne feledje, hogy a zárójelben lévő webhely URL -jét mindig cserélje le a cél URL -re.

Miután megkapta a webhelyet a kap kérést, akkor továbbítja azt a Beautiful Soup-hoz, amely a választott formátumtól függően a beépített XML- vagy HTML-értelmező segítségével most már olvashatja a tartalmat HTML- vagy XML-fájlként.

Tekintse meg ezt a következő kódrészletet, hogy megtudja, hogyan kell ezt megtenni a HTML -elemzővel:

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

A fenti kód egy weboldal teljes DOM -ját adja vissza tartalmával.

A DOM összehangolt verzióját a szépít módszer. Ezt kipróbálhatja a kimenet megtekintéséhez:

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

A weboldal tiszta tartalmát is megkaphatja anélkül, hogy betöltené annak elemeit a .szöveg módszer:

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

Hogyan lehet letörölni egy weboldal tartalmát a címke neve alapján

A Beautiful Soup segítségével le is kaparhatja a tartalmat egy adott címkében. Ehhez meg kell adnia a célcímke nevét a Beautiful Soup lehúzó kérésében.

Nézzük például, hogyan szerezheti be a tartalmat a h2 egy weboldal címkéi.

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

A fenti kódrészletben leves.h2 visszaadja az elsőt h2 a weboldal eleme, és figyelmen kívül hagyja a többit. Az összes betöltéséhez h2 elemeket, használhatja a Találd meg mindet beépített funkció és a számára Python hurok:

hogyan tükrözi az androidot a Mac -re
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)

Ez a kódblokk mindent visszaad h2 elemei és azok tartalma. A tartalom azonban a címke betöltése nélkül is beszerezhető a .húr módszer:

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)

Ezt a módszert bármilyen HTML -címkére használhatja. Mindössze annyit kell tennie, hogy kicseréli a h2 címkézd meg a neked tetszővel.

Azonban több címkét is lekaparhat, ha átad egy címkék listáját a Találd meg mindet módszer. Például az alábbi kódblokk lekaparja a tartalmát nak nek , h2 , és cím címkék:

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)

Hogyan kaparjunk le egy weboldalt az azonosító és az osztálynév használatával

Miután a DevTools segítségével megvizsgálta a webhelyet, többet tudhat meg az egyes elemeket a DOM -ban tároló id és class attribútumokról. Ha megvan ez az információ, ezzel a módszerrel lekaparhatja a weboldalt. Ez akkor hasznos, ha a célkomponens tartalma kilép az adatbázisból.

Használhatja a megtalálja módszer az azonosító és osztálykaparók számára. ellentétben a Találd meg mindet metódus, amely egy iterálható objektumot ad vissza, a megtalálja A módszer egyetlen, nem megismételhető célon dolgozik, amely a id ebben az esetben. Tehát nem kell használni a számára hurok vele.

Nézzünk egy példát arra, hogyan kaparhatja le az alábbi oldal tartalmát az azonosító használatával:

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)

Ehhez az osztálynévhez cserélje ki a id val vel osztály . Az írás azonban osztály közvetlenül szintaktikai zavart eredményez, mivel a Python kulcsszónak tekinti. A hiba kikerüléséhez aláhúzást kell írnia az osztály elé, így: osztály_ .

Lényegében az azonosítót tartalmazó sor lesz:

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

Azonban egy weboldalt le is kaparhat, ha egy adott címke nevét a megfelelő azonosítójával vagy osztályával hívja fel:

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

Hogyan készítsünk újrafelhasználható kaparót gyönyörű levesből

Létrehozhat egy osztályt, és az összes korábbi kódot összeállíthatja az adott osztály függvényébe, hogy újrahasznosítható kaparót készítsen, amely lekérheti egyes címkék tartalmát és azonosítóit. Ezt úgy tehetjük meg, hogy létrehozunk egy függvényt, amely öt érvet fogad el: egy URL -t, két címkenevet és a hozzájuk tartozó azonosítókat vagy osztályokat.

Tegyük fel, hogy az ingek árát le akarja kapni egy e-kereskedelmi webhelyről. Az alábbi példa kaparóosztály kibontja az ár- és ingcímkéket a hozzájuk tartozó azonosítókkal vagy osztályokkal, majd Pandas -adatkeretként adja vissza, oszlopnévként az „Ár” és a „Pólónév” opciót.

Győződjön meg arról, hogy Ön pip install pandák terminálon keresztül, ha még nem tette meg.

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

Az imént készített kaparó egy újrafelhasználható modul, amelyet importálhat és használhat egy másik Python -fájlban. Hívni a kaparás függvényt az osztályából, használja scrapeit.scrape ('Webhely URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id') . Ha nem adja meg az URL -t és más paramétereket, a más nyilatkozat erre kéri.

Ha ezt a scaper -t egy másik Python -fájlban szeretné használni, a következőképpen importálhatja:

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

Jegyzet: kaparó_modul a kaparóosztályt tartalmazó Python fájl neve.

Ellenőrizheti a Gyönyörű levesdokumentáció ha mélyebben szeretne elmélyülni abban, hogyan tudja a lehető legjobban kihasználni.

A gyönyörű leves értékes webkaparó eszköz

A Beautiful Soup egy erőteljes Python képernyőkaparó, amely lehetővé teszi az adatok ellenőrzését a kaparás során. Értékes üzleti eszköz, mivel hozzáférést biztosít a versenytárs webes adataihoz, például az árakhoz, a piaci trendekhez stb.

mennyi adatot használ a streaming tv

Bár ebben a cikkben címkekaparót készítettünk, továbbra is játszhat ezzel a hatékony Python könyvtárral, hogy hasznosabb kaparóeszközöket készítsen.

Részvény Részvény Csipog Email A legjobb webkaparó eszközök online

Elemzési célból adatokat kell gyűjtenie a webhelyekről? Ezek a webkaparó eszközök megkönnyítik.

Olvassa tovább
Kapcsolódó témák
  • Programozás
  • Piton
A szerzőről Idisou Omisola(94 cikk megjelent)

Idowu szenvedélyes minden intelligens technológia és termelékenység iránt. Szabadidejében kódolással játszik, és ha unatkozik, sakktáblára vált, de szeret időnként elszakadni a rutintól. Szenvedélye, hogy megmutassa az embereknek a modern technológia körüli utat, arra ösztönzi, hogy többet írjon.

Továbbiak Idowu Omisola -tól

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, értékeléseket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide