Saskrāpējiet vietni, izmantojot šo skaisto zupas Python apmācību

Saskrāpējiet vietni, izmantojot šo skaisto zupas Python apmācību

Beautiful Soup ir atvērtā koda Python bibliotēka. Tas izmanto navigācijas parserus, lai nokasītu XML un HTML failu saturu. Jums ir nepieciešami dati vairākiem analītiskiem mērķiem. Tomēr, ja esat iesācējs Python un tīmekļa skrāpēšanas jomā, Python skaisto zupu bibliotēku ir vērts izmēģināt, lai izveidotu tīmekļa nokasīšanas projektu.





Izmantojot Python atvērtā koda skaisto zupu bibliotēku, jūs varat iegūt datus, nokasot jebkuru tīmekļa lapas daļu vai elementu, maksimāli kontrolējot procesu. Šajā rakstā mēs apskatām, kā jūs varat izmantot skaisto zupu, lai nokasītu vietni.





Kā uzstādīt skaistu zupu un sākt ar to

Pirms turpināt, šajā skaistas zupas apmācības rakstā mēs izmantosim Python 3 un skaista zupa4 , skaistas zupas jaunākā versija. Pārliecinieties, ka jūs izveidot Python virtuālo vidi lai izolētu savu projektu un tā paketes no vietējā datorā esošajiem.





kā uzraudzīt katras ierīces Wi -Fi tīkla joslas platuma izmantošanu

Lai sāktu darbu, virtuālajā vidē jāinstalē skaisto zupu bibliotēka. Beautiful Soup ir pieejams kā PyPi pakotne visām operētājsistēmām, tāpēc varat to instalēt ar pip instalēt beautifulsoup4 komandu, izmantojot termināli.

Tomēr, ja izmantojat Debian vai Linux, iepriekš minētā komanda joprojām darbojas, taču to var instalēt, izmantojot pakotņu pārvaldnieku apt-get install python3-bs4 .



Skaista zupa netīra vietrāžus URL tieši. Tas darbojas tikai ar gataviem HTML vai XML failiem. Tas nozīmē, ka jūs nevarat tieši ievadīt URL. Lai atrisinātu šo problēmu, pirms barošanas ar skaisto zupu, jums jāiegūst mērķa vietnes URL ar Python pieprasījumu bibliotēku.

Lai padarītu šo bibliotēku pieejamu skrāpim, palaidiet pip instalēšanas pieprasījumi komandu, izmantojot termināli.





Lai izmantotu XML parsēšanas bibliotēku, palaidiet pip instalēt lxml lai to instalētu.

Pārbaudiet tīmekļa vietni, kuru vēlaties nokasīt

Pirms nokopēt nevienu nepazīstamu vietni, ieteicams pārbaudīt tās elementus. To var izdarīt, pārslēdzot pārlūkprogrammu izstrādātāja režīmā. Tas ir diezgan viegli izmantojiet Chrome DevTools ja izmantojat pārlūku Google Chrome.





Tomēr ir jāpārbauda tīmekļa vietne, lai uzzinātu vairāk par tās HTML tagiem, atribūtiem, klasēm un ID. To darot, tiek atklāti tīmekļa lapas pamatelementi un tās satura veidi.

Tas arī palīdz jums izstrādāt labākās stratēģijas, kuras varat izmantot, lai no vietnes iegūtu precīzus datus un to, kā tos iegūt.

Kā nokasīt vietņu datus ar skaistu zupu

Tagad, kad viss ir gatavs un gatavs, atveriet vēlamo koda redaktoru un izveidojiet jaunu Python failu, piešķirot tam izvēlēto nosaukumu. Tomēr jūs varat arī izmantojiet tīmekļa IDE, piemēram, Jupyter Notebook ja neesat pazīstams ar Python palaišanu, izmantojot komandrindu.

Pēc tam importējiet nepieciešamās bibliotēkas:

from bs4 import BeautifulSoup
import requests

Vispirms apskatīsim, kā darbojas pieprasījumu bibliotēka:

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

Palaižot iepriekš minēto kodu, tas atgriež statusu 200, norādot, ka jūsu pieprasījums ir veiksmīgs. Pretējā gadījumā tiek parādīts statuss 400 vai daži citi kļūdu statusi, kas norāda uz neizdevušos GET pieprasījumu.

Neaizmirstiet vienmēr aizvietot iekavās norādīto vietnes URL ar savu mērķa URL.

Kad esat ieguvis vietni ar gūt pēc pieprasījuma, jūs to nododat skaistajai zupai, kas tagad var lasīt saturu kā HTML vai XML failus, izmantojot iebūvēto XML vai HTML parsētāju, atkarībā no izvēlētā formāta.

Apskatiet šo nākamo koda fragmentu, lai uzzinātu, kā to izdarīt, izmantojot HTML parsētāju:

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

Iepriekš minētais kods atgriež visu tīmekļa lapas DOM ar tās saturu.

Varat arī iegūt saskaņotāku DOM versiju, izmantojot izlikties metode. Jūs varat izmēģināt to, lai redzētu tā iznākumu:

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

Jūs varat arī iegūt tīru tīmekļa lapas saturu, neielādējot tās elementu ar .teksts metode:

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

Kā nokasīt tīmekļa lapas saturu pēc taga nosaukuma

Izmantojot skaisto zupu, varat arī nokasīt saturu noteiktā tagā. Lai to izdarītu, skaistajā zupas skrāpja pieprasījumā ir jāiekļauj mērķa taga nosaukums.

Piemēram, apskatīsim, kā jūs varat iegūt saturu h2 tīmekļa lapas tagi.

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

Iepriekš redzamajā koda fragmentā zupa.h2 atgriež pirmo h2 tīmekļa lapas elementu un pārējo ignorē. Lai ielādētu visus h2 elementus, varat izmantot find_all iebūvēta funkcija un priekš Python cilpa:

Skype nevar savienot Windows 10
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)

Šis koda bloks atgriež visu h2 elementi un to saturs. Tomēr saturu var iegūt, neielādējot tagu, izmantojot .virkne metode:

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)

Šo metodi varat izmantot jebkuram HTML tagam. Viss, kas jums jādara, ir nomainīt h2 atzīmējiet to, kas jums patīk.

Tomēr varat arī nokasīt vairāk tagu, nododot tagu sarakstu find_all metode. Piemēram, zemāk esošais koda bloks nokopē uz , h2 , un titulu tagi:

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)

Kā nokasīt tīmekļa lapu, izmantojot ID un klases nosaukumu

Pēc vietnes pārbaudes ar DevTools tas ļauj jums uzzināt vairāk par ID un klases atribūtiem, kas satur katru elementu savā DOM. Kad esat ieguvis šo informāciju, varat nokopēt šo tīmekļa lapu, izmantojot šo metodi. Tas ir noderīgi, ja mērķa komponenta saturs tiek izslēgts no datu bāzes.

Jūs varat izmantot atrast ID un klases skrāpju metode. Atšķirībā no find_all metode, kas atgriež atkārtojamu objektu atrast metode darbojas uz vienu, neatkārtojamu mērķi, kas ir id šajā gadījumā. Tātad, jums nav jāizmanto priekš cilpa ar to.

Apskatīsim piemēru, kā jūs varat nokopēt lapas saturu, izmantojot 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)

Lai to izdarītu klases nosaukumam, nomainiet id ar klase . Tomēr rakstot klase tieši rada sintakses neskaidrības, jo Python to uzskata par atslēgvārdu. Lai apietu šo kļūdu, klases priekšā jāraksta pasvītrojums: class_ .

Būtībā rinda, kas satur ID, kļūst par:

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

Tomēr jūs varat arī nokasīt tīmekļa lapu, izsaucot noteiktu taga nosaukumu ar atbilstošo ID vai klasi:

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

Kā pagatavot atkārtoti lietojamu skrāpi ar skaistu zupu

Jūs varat izveidot klasi un apvienot visu iepriekšējo kodu šīs klases funkcijā, lai izveidotu atkārtoti lietojamu skrāpi, kas iegūst dažu tagu saturu un to ID. Mēs to varam izdarīt, izveidojot funkciju, kas pieņem piecus argumentus: URL, divus tagu nosaukumus un tiem atbilstošos ID vai klases.

Pieņemsim, ka vēlaties izvilkt kreklu cenu no e-komercijas vietnes. Zemāk redzamā skrāpju klases klase izvelk cenu un kreklu tagus ar tiem atbilstošajiem ID vai klasēm un pēc tam atgriež to kā Pandas datu rāmi ar sleju nosaukumu “Cena” un Krekla_nosaukums.

Pārliecinieties, ka jūs pip instalēt pandas izmantojot termināli, ja vēl neesat to izdarījis.

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

Tikko izveidotais skrāpis ir atkārtoti lietojams modulis, un jūs varat to importēt un izmantot citā Python failā. Lai zvanītu uz nokasīt funkciju no savas klases, jūs izmantojat scrapeit.scrape ('Vietnes URL', 'cenu_tag', 'cenas_idents', 'krekla_tag', 'krekla_id') . Ja nenorādāt URL un citus parametrus, citādi paziņojums liek jums to darīt.

Lai izmantotu šo scaper citā Python failā, varat to importēt šādi:

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

Piezīme: skrāpis_modulis ir Python faila nosaukums, kurā ir skrāpju klase.

Varat arī pārbaudīt Skaista zupas dokumentācija ja vēlaties ienirt dziļāk, kā to vislabāk izmantot.

Skaista zupa ir vērtīgs tīmekļa nokasīšanas rīks

Beautiful Soup ir jaudīgs Python ekrāna skrāpis, kas ļauj jums kontrolēt, kā jūsu dati tiek nokasīti skrāpēšanas laikā. Tas ir vērtīgs biznesa rīks, jo tas var dot jums piekļuvi konkurenta tīmekļa datiem, piemēram, cenām, tirgus tendencēm un citiem.

logs nevarēja pabeigt formātu

Lai gan šajā rakstā esam izveidojuši tagu skrāpi, jūs joprojām varat spēlēties ar šo jaudīgo Python bibliotēku, lai izveidotu noderīgākus skrāpēšanas rīkus.

Kopīgot Kopīgot Čivināt E -pasts Labākie tīmekļa skrāpēšanas rīki tiešsaistē

Nepieciešams apkopot datus no vietnēm analītiskos nolūkos? Šie tīmekļa skrāpēšanas rīki to atvieglo.

Lasīt Tālāk
Saistītās tēmas
  • Programmēšana
  • Python
Par autoru Idisou Omisola(Publicēti 94 raksti)

Idowu aizraujas ar jebko gudru tehnoloģiju un produktivitāti. Brīvajā laikā viņš spēlējas ar kodēšanu un pārslēdzas uz šaha galdu, kad viņam ir garlaicīgi, taču viņam arī patīk laiku pa laikam atrauties no rutīnas. Viņa aizraušanās parādīt cilvēkiem ceļu apkārt mūsdienu tehnoloģijām motivē viņu rakstīt vairāk.

Vairāk no Idowu Omisola

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai iegūtu tehniskus padomus, pārskatus, bezmaksas e -grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu