bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


webscraping_apache

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
webscraping_apache [2022/08/01 06:34]
lidia_alos [Les API com a alternativa al web scraping]
webscraping_apache [2022/08/01 07:05] (actual)
lidia_alos [Eines de scraping per a Python]
Línia 349: Línia 349:
  
 Sempre que hi hagi una API disponible i que ofereixi dades completes, aquest serà **el millor mètode per accedir a la informació**, sense oblidar que mitjançant el web scraping es poden extreure, en principi, tots els textos que una persona podria llegir en una pàgina web. Sempre que hi hagi una API disponible i que ofereixi dades completes, aquest serà **el millor mètode per accedir a la informació**, sense oblidar que mitjançant el web scraping es poden extreure, en principi, tots els textos que una persona podria llegir en una pàgina web.
 +
 +===== Eines de scraping per a Python =====
 +
 +L'ecosistema Python inclou diverses eines consolidades per realitzar projectes de scraping:
 +  * Scrapy
 +  * Selenium
 +  * BeautifulSoup
 +
 +A continuació, us presentem els avantatges i inconvenients de cadascuna d'aquestes tecnologies.
 +
 +**Web scraping amb Scrapy**
 +
 +Scrapy, una de les eines per fer web scraping amb Python que presentem, utilitza un analitzador sintàctic o **parser HTML** per extreure dades del text font (en HTML) de la web seguint aquest esquema:
 +
 +  URL → Solicitud HTTP → HTML → Scrapy
 +  
 +El concepte clau del desenvolupament de scrapers amb Scrapy són els anomenats web spiders, programes de scraping senzills i basats en Scrapy. **Cada spider (aranya) està programat per scrapejar una web concreta** i es va despenjant de pàgina a pàgina. La programació utilitzada està orientada a objectes: cada spider és una classe de Python pròpia.
 +
 +A més del paquet de Python en si, la instal·lació de Scrapy inclou una eina de línia d'ordres, la Scrapy Shell, que permet controlar els spiders. A més, els spiders ja creats poden emmagatzemar-se a la [[https://www.scrapinghub.com/scrapy-cloud|Scrapy Cloud]]. Des d'allà s'executen amb temps establerts. D'aquesta manera **poden scrapejar-se també llocs web complexos** sense necessitat d'utilitzar el mateix ordinador ni la pròpia connexió a Internet. Una altra manera de fer-ho és crear un servidor de web scraping propi usant el programari de codi obert [[https://scrapyd.readthedocs.io/en/stable/|Scrapyd]].
 +
 +Scrapy és una plataforma consolidada per aplicar tècniques de web scraping amb Python. La seva arquitectura està **orientada a les necessitats de projectes professionals**. Scrapy compta, per exemple, amb una canonada o pipeline integrada per processar les dades extretes. L'obertura de les pàgines a Scrapy es produeix de manera asíncrona, és a dir, amb la possibilitat de descarregar diverses pàgines simultàniament. Per això, Scrapy és una bona opció per a projectes de scraping que hagin de processar grans volums de pàgines.
 +
 +**Web scraping amb Selenium**
 +
 +El programari lliure Selenium és un //framework// per realitzar tests automatitzats de programari a aplicacions web. En principi, **va ser desenvolupat per posar a prova pàgines i apps web**, però el [[https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/tutorial-de-selenium-webdriver/|WebDriver]] de Selenium també es pot fer servir amb Python per realitzar //scraping//. Si bé Selenium en si no està escrit a Python, amb aquest llenguatge de programació és possible accedir a les funcions del programari.
 +
 +A diferència de Scrapy i BeautifulSoup, Selenium no treballa amb el text font en HTML de la web en qüestió, sinó que **carrega la pàgina en un navegador sense interfície d'usuari**. El navegador interpreta llavors el codi font de la pàgina i crea, a partir d'aquest document, un [[https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/presentacion-de-document-object-model-dom/|Document Object Model]] (model d'objectes de document o DOM). Aquesta interfície estandarditzada permet posar a prova les interaccions dels usuaris. D'aquesta manera s'aconsegueix, per exemple, simular clics i emplenar formularis automàticament. Els canvis a la web que resulten d'aquestes accions es reflecteixen al DOM. L'estructura del procés de web scraping amb Selenium és la següent:
 +
 +  URL → Sol·licitud HTTP → HTML → Selenium → DOM
 +
 +Com que el DOM es genera de manera dinàmica, Selenium permet **scrapejar també pàgines el contingut de les quals ha estat generat mitjançant JavaScript**. L´accés a continguts dinàmics és l´avantatge més important de Selenium. En termes pràctics, Selenium també es pot fer servir en combinació amb Scrapy o amb BeautifulSoup: Selenium proporcionaria el text font, mentre que la segona eina s'encarregaria de l'anàlisi sintàctica i l'avaluació de les dades. En aquest cas, l'esquema que se seguiria tindria aquesta manera:
 +
 +  URL → Sol·licitud HTTP → HTML → Selenium → DOM → HTML → Scrapy / BeautifulSoup
 +
 +**Web scraping amb BeautifulSoup**
 +
 +De les tres eines que presentem **per fer web scraping amb Python, BeautifulSoup és la més antiga**. Igual que en el cas de Scrapy, es tracta d'un parser o analitzador sintàctic HTML. El web scraping amb BeautifulSoup té la següent estructura:
 +
 +  URL → Sol·licitud HTTP → HTML → BeautifulSoup
 +
 +Tot i això, a diferència de Scrapy, a BeautifulSoup el desenvolupament de l'scraper no requereix una programació orientada a objectes, sinó que **l'scraper es redacta com una senzilla seqüència d'ordres o script**. Amb això, BeautifulSoup ofereix el mètode més fàcil per pescar informació de la sopa de tags a què fa honor el seu nom.
 +
 +<WRAP center round important 100%>
 +===== En resum =====
 +**Quina eina hauries de triar pel teu projecte?** En resum: escull **BeautifulSoup** si necessites un desenvolupament ràpid o si vols familiaritzar-te primer amb els conceptes de Python i de web scraping. **Scrapy**, per la seva banda, et permet realitzar complexes aplicacions de web scraping a Python si disposes dels coneixements necessaris. **Selenium** serà la teva millor opció si la teva prioritat és extreure continguts dinàmics amb Python.
 +</WRAP>
 +
webscraping_apache.1659335664.txt.gz · Darrera modificació: 2022/08/01 06:34 per lidia_alos