web-scrapingAan de slag met web-scraping


Opmerkingen

Deze sectie geeft een overzicht van wat web-scraping is en waarom een ontwikkelaar het misschien wil gebruiken.

Het moet ook alle grote onderwerpen binnen web-scraping vermelden en een link naar de gerelateerde onderwerpen bevatten. Aangezien de documentatie voor webscraping nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.

Webschrapen in Python (met BeautifulSoup)

Bij het uitvoeren van data science-taken is het gebruikelijk om gegevens te gebruiken die op internet zijn gevonden. U hebt meestal toegang tot deze gegevens via een Application Programming Interface (API) of in andere indelingen. Er zijn echter momenten waarop de gewenste gegevens alleen toegankelijk zijn als onderdeel van een webpagina. In dit soort gevallen komt een techniek genaamd web scraping in beeld.
Om deze techniek toe te passen om gegevens van webpagina's te verkrijgen, hebben we basiskennis nodig over de structuur van webpagina's en tags die worden gebruikt bij de ontwikkeling van webpagina's (bijv. <html> , <li> , <div> enz.). Als u nieuw bent in webontwikkeling, kunt u dit hier leren.

Dus om te beginnen met web scrapping, gebruiken we een eenvoudige website . We gebruiken de requests om de inhoud van de webpagina OF de broncode te krijgen.

import requests
page = requests.get("http://dataquestio.github.io/web-scraping-pages/simple.html")
print (page.content) ## shows the source code
 

Nu zullen we de bs4-module gebruiken om de inhoud te schrappen om de nuttige gegevens te krijgen.

from bs4 import BeautifulSoup
soup = BeautifulSoup(page.content, 'html.parser')
print(soup.prettify()) ##shows source in html format
 

U kunt de vereiste tags vinden met behulp van het inspect element hulpmiddel in uw browser. Laten we zeggen dat u alle gegevens wilt ophalen die zijn opgeslagen met de tag <li> Vervolgens kunt u deze vinden met het script

soup.find_all('li')
# you can also find all the list items with class='ABC'
# soup.find_all('p', class_='ABC')
# OR all elements with class='ABC'
# soup.find_all(class_="ABC")
# OR all the elements with class='ABC'
# soup.find_all(id="XYZ")
 

Vervolgens kunt u de tekst in de tag gebruiken met

for i in range(len(soup.find_all('li'))):
    print (soup.find_all('li')[i].get_text())
 

Het hele script is klein en vrij eenvoudig.

import requests
from bs4 import BeautifulSoup

page = requests.get("http://dataquestio.github.io/web-scraping-pages/simple.html") #get the page
soup = BeautifulSoup(page.content, 'html.parser') # parse according to html
soup.find_all('li') #find required tags

for i in range(len(soup.find_all('li'))):
    print (soup.find_all('li')[i].get_text())