Pag-scrape ang isang Website Gamit Ang Magagandang Soup Python Tutorial

Pag-scrape ang isang Website Gamit Ang Magagandang Soup Python Tutorial

Ang Beautiful Soup ay isang open-source na silid-aklatan ng Python. Gumagamit ito ng pag-navigate sa mga parser upang i-scrape ang nilalaman ng mga XML at HTML file. Kailangan mo ng data para sa maraming mga hangarin sa pagsuri. Gayunpaman, kung bago ka sa Python at web scraping, ang library ng Beautiful Soup ng Python ay nagkakahalaga ng pagsubok para sa isang proyekto sa pag-scrap ng web.





Sa open-source na librong Magagandang Soup ng Python, maaari kang makakuha ng data sa pamamagitan ng pag-scrap ng anumang bahagi o elemento ng isang webpage na may maximum na kontrol sa proseso. Sa artikulong ito, tinitingnan namin kung paano mo magagamit ang Magandang Sopas upang mag-scrape ng isang website.





Paano Mag-install ng Magagandang Sopas at Magsimula Sa Ito

Bago kami magpatuloy, sa artikulo ng tutorial ng Magagandang Soup, gagamitin namin ang Python 3 at beautifulsoup4 , ang pinakabagong bersyon ng Magagandang Sopas. Siguraduhin na ikaw lumikha ng isang virtual na kapaligiran ng Python upang ihiwalay ang iyong proyekto at ang mga pakete mula sa mga nasa iyong lokal na makina.





ilagay ang iyong mukha sa ibang katawan

Upang makapagsimula, dapat mong i-install ang librong Magagandang Soup sa iyong virtual na kapaligiran. Magagamit ang Magagandang Sopas bilang isang pakete ng PyPi para sa lahat ng mga operating system, upang mai-install mo ito sa pip install ng beautifulsoup4 utos sa pamamagitan ng terminal.

Gayunpaman, kung nasa Debian o Linux ka, gagana pa rin ang utos sa itaas, ngunit maaari mo itong mai-install sa tagapamahala ng package sa pamamagitan ng pagpapatakbo apt-get install python3-bs4 .



Ang Magagandang Sopas ay hindi direktang nai-scrape ang mga URL. Gumagana lamang ito sa mga nakahandang HTML o XML file. Nangangahulugan iyon na hindi ka makakapasa ng isang URL diretso dito. Upang malutas ang problemang iyon, kailangan mong makuha ang URL ng target na website gamit ang library ng kahilingan ni Python bago pakainin ito sa Magandang Sopas.

Upang gawing magagamit ang library na iyon para sa iyong scraper, patakbuhin ang pip mga kahilingan sa pag-install utos sa pamamagitan ng terminal.





Upang magamit ang XML parser library, patakbuhin pip install lxml upang mai-install ito.

Suriin ang Webpage na Nais Mong Mag-scroll

Bago mag-scrape ng anumang website na hindi mo pamilyar, ang isang pinakamahusay na kasanayan ay upang siyasatin ang mga elemento nito. Magagawa mo ito sa pamamagitan ng paglipat ng iyong browser sa mode ng developer. Ito ay medyo madali upang gumamit ng Chrome DevTools kung gumagamit ka ng Google Chrome.





Gayunpaman, kinakailangan upang siyasatin ang isang webpage upang malaman ang higit pa tungkol sa mga HTML tag, katangian, klase, at id. Ang paggawa nito ay naglalantad ng mga pangunahing elemento ng isang webpage at mga uri ng nilalaman nito.

Tinutulungan ka din nitong mabuo ang pinakamahusay na mga diskarte na maaari mong magamit upang makuha ang eksaktong data na gusto mo mula sa isang website at kung paano mo ito makukuha.

Paano Mag-scrape ng Data ng Isang Mga Website Sa Magandang Sopas

Ngayon na mayroon ka nang lahat at handa na, buksan ang isang ginustong editor ng code at lumikha ng isang bagong file ng Python, bibigyan ito ng isang napiling pangalan. Gayunpaman, maaari mo rin gumamit ng mga web-based IDE tulad ng Jupyter Notebook kung hindi ka pamilyar sa pagpapatakbo ng Python sa pamamagitan ng linya ng utos.

Susunod, i-import ang mga kinakailangang aklatan:

from bs4 import BeautifulSoup
import requests

Una, tingnan natin kung paano gumagana ang mga kahilingan sa library:

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

Kapag pinatakbo mo ang code sa itaas, nagbabalik ito ng 200 katayuan, na nagpapahiwatig na matagumpay ang iyong kahilingan. Kung hindi man, makakakuha ka ng isang katayuan na 400 o ilang iba pang mga katayuan sa error na nagsasaad ng isang nabigong kahilingan sa GET.

Tandaan na palaging palitan ang URL ng website sa panaklong sa iyong target na URL.

Kapag nakuha mo ang website sa kumuha ka kahilingan, ipapasa mo ito sa Beautiful Soup, na mababasa na ngayon ang nilalaman bilang mga HTML o XML file gamit ang built-in na XML o HTML parser, depende sa iyong napiling format.

Tingnan ang susunod na code na ito upang makita kung paano ito gawin sa HTML parser:

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

Ibinabalik ng code sa itaas ang buong DOM ng isang webpage kasama ang nilalaman nito.

Maaari ka ring makakuha ng isang mas nakahanay na bersyon ng DOM sa pamamagitan ng paggamit ng mapagkunwari pamamaraan Maaari mong subukan ito upang makita ang kinalabasan nito:

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

Maaari mo ring makuha ang purong nilalaman ng isang webpage nang hindi nilo-load ang elemento nito sa .text pamamaraan:

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

Paano i-scrape ang Nilalaman ng isang Webpage sa pamamagitan ng Pangalan ng Tag

Maaari mo ring i-scrape ang nilalaman sa isang partikular na tag gamit ang Beautiful Soup. Upang magawa ito, kailangan mong isama ang pangalan ng target na tag sa iyong kahilingan sa scraper ng Magagandang Soup.

Halimbawa, tingnan natin kung paano mo makukuha ang nilalaman sa h2 mga tag ng isang webpage.

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

Sa snippet ng code sa itaas, sopas.h2 ibinalik ang una h2 elemento ng webpage at hindi pinapansin ang natitira. Upang mai-load ang lahat ng h2 elemento, maaari mong gamitin ang Hanapin lahat built-in na pag-andar at ang para sa loop ng Python:

kung paano baguhin ang background sa photoshop
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)

Ang bloke ng code na iyon ang nagbabalik sa lahat h2 elemento at kanilang nilalaman. Gayunpaman, maaari mong makuha ang nilalaman nang hindi nilo-load ang tag sa pamamagitan ng paggamit ng .string pamamaraan:

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)

Maaari mong gamitin ang pamamaraang ito para sa anumang HTML tag. Ang kailangan mo lang gawin ay palitan ang h2 tag sa gusto mo.

Gayunpaman, maaari mo ring i-scrape ang higit pang mga tag sa pamamagitan ng pagpasa ng isang listahan ng mga tag sa Hanapin lahat pamamaraan Halimbawa, ang pag-block ng code sa ibaba ay ina-scrape ang nilalaman ng sa , h2 , at pamagat mga tag:

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)

Paano Mag-scrap ng isang Webpage Gamit ang ID at Pangalan ng Klase

Matapos suriin ang isang website gamit ang mga DevTools, hinahayaan ka nitong malaman ang higit pa tungkol sa id at mga katangian ng klase na humahawak sa bawat elemento sa DOM nito. Kapag mayroon ka ng piraso ng impormasyon, maaari mong i-scrape ang webpage na iyon gamit ang pamamaraang ito. Ito ay kapaki-pakinabang kapag ang nilalaman ng isang target na sangkap ay looping out mula sa database.

Maaari mong gamitin ang hanapin pamamaraan para sa mga scraper ng id at klase. hindi katulad ng Hanapin lahat paraan na nagbabalik ng isang umuulit na bagay, ang hanapin gumagana ang pamamaraan sa isang solong, hindi matatawaran na target, na kung saan ay ang id sa kasong ito. Kaya, hindi mo kailangang gamitin ang para sa loop kasama nito

Tingnan natin ang isang halimbawa ng kung paano mo mai-scrape ang nilalaman ng isang pahina sa ibaba gamit ang 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)

Upang gawin ito para sa isang pangalan ng klase, palitan ang id kasama si klase . Gayunpaman, ang pagsusulat klase direktang nagreresulta sa pagkalito ng syntax dahil nakikita ito ng Python bilang isang keyword. Upang mapalampas ang error na iyon, kailangan mong magsulat ng isang underscore sa harap ng klase tulad nito: klase_ .

Sa esensya, ang linya na naglalaman ng id ay nagiging:

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

Gayunpaman, maaari mo ring i-scrape ang isang webpage sa pamamagitan ng pagtawag sa isang partikular na pangalan ng tag kasama ang kaukulang id o klase nito:

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

Paano Gumawa ng Reusable Scraper Na May Magandang Sopas

Maaari kang lumikha ng isang klase at isama ang lahat ng nakaraang code sa isang pagpapaandar sa klase na iyon upang makagawa ng isang magagamit muli na scraper na nakakakuha ng nilalaman ng ilang mga tag at kanilang mga id. Magagawa natin ito sa pamamagitan ng paglikha ng isang pagpapaandar na tumatanggap ng limang mga argumento: isang URL, dalawang pangalan ng tag, at kanilang mga kaukulang id o klase.

Ipagpalagay na nais mong i-scrape ang presyo ng mga kamiseta mula sa isang website ng e-commerce. Ang halimbawang klase ng scraper sa ibaba ay kumukuha ng mga tag ng presyo at shirt kasama ang kanilang kaukulang mga id o klase at pagkatapos ay ibabalik ito bilang isang frame ng data ng Pandas na may 'Presyo' at Shirt_name bilang mga pangalan ng haligi.

Siguraduhin na ikaw pip install pandas sa pamamagitan ng terminal kung hindi mo pa nagagawa.

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

Ang scraper na ginawa mo lang ay isang magagamit na module at maaari mong mai-import at magamit ito sa isa pang file ng Python. Upang tawagan ang simutin pagpapaandar mula sa klase nito, ginagamit mo scrapeit.scrape ('Website URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id') . Kung hindi mo ibigay ang URL at iba pang mga parameter, ang iba pa Sinasabi ka ng pahayag na gawin ito.

Upang magamit ang scaper na iyon sa isa pang file ng Python, maaari mo itong mai-import tulad nito:

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

Tandaan: scraper_module ay ang pangalan ng file ng Python na humahawak sa klase ng scraper.

Maaari mo ring suriin ang Magandang dokumentasyon ng Soup kung nais mong sumisid nang mas malalim sa kung paano mo magagamit ang pinakamahusay na paggamit nito.

Ang Magandang Sopas ay isang Napakahalagang Web Scraping Tool

Ang Beautiful Soup ay isang malakas na scrap ng screen ng Python na nagbibigay sa iyo ng kontrol sa kung paano dumarating ang iyong data sa panahon ng pag-scrape. Ito ay isang mahalagang tool sa negosyo, dahil maaari ka nitong bigyan ng access sa web data ng kakumpitensya tulad ng pagpepresyo, mga uso sa merkado, at marami pa.

i-install ang windows 10 mula sa usb drive

Bagaman gumawa kami ng tag scraper sa artikulong ito, maaari ka pa ring maglaro kasama ang malakas na library ng Python na ito upang makagawa ng mas kapaki-pakinabang na mga tool sa pag-scrape.

Magbahagi Magbahagi Mag-tweet Email Ang Pinakamahusay na Web Scraping Tools Online

Kailangang mangolekta ng data mula sa mga website para sa mga layuning pang-analitikal? Ginagawang madali ng mga tool sa pag-scrap ng web na ito.

Basahin Susunod
Mga Kaugnay na Paksa
  • Programming
  • Sawa
Tungkol sa May-akda Idisou Omisola(94 na artikulong nalathala)

Si Idowu ay madamdamin tungkol sa anumang matalinong tech at pagiging produktibo. Sa kanyang libreng oras, naglalaro siya kasama ang pag-coding at paglipat sa chessboard kapag siya ay naiinip, ngunit gusto din niya ang paghihiwalay mula sa nakagawiang gawain sa isang sandali. Ang kanyang hilig sa pagpapakita sa mga tao ng paraan sa paligid ng modernong tech ay nag-uudyok sa kanya na magsulat pa.

Higit pa Mula sa Idowu Omisola

Mag-subscribe sa aming newsletter

Sumali sa aming newsletter para sa mga tip sa tech, pagsusuri, libreng ebook, at eksklusibong deal!

Mag-click dito upang mag-subscribe