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
Ultima revisió Ambdós costats nova versio
webscraping_apache [2022/08/01 06:38]
lidia_alos
webscraping_apache [2022/08/01 07:04]
lidia_alos [Eines de scraping per a Python]
Línia 358: Línia 358:
  
 A continuació, us presentem els avantatges i inconvenients de cadascuna d'aquestes tecnologies. 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.txt · Darrera modificació: 2022/08/01 07:05 per lidia_alos