Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
webscraping_apache [2022/07/05 18:31] josefina_llaberia |
webscraping_apache [2022/08/01 07:05] (actual) lidia_alos [Eines de scraping per a Python] |
||
---|---|---|---|
Línia 195: | Línia 195: | ||
Comandes: | Comandes: | ||
- | pip install builtWith | + | |
| | ||
Collecting builtWith | Collecting builtWith | ||
Línia 234: | Línia 234: | ||
Comandes: | Comandes: | ||
- | sudo apt install apache2 | + | |
Una vegada instal·lat, | Una vegada instal·lat, | ||
Comanda: | Comanda: | ||
- | curl -I localhost | + | |
| | ||
HTTP/1.1 200 OK | HTTP/1.1 200 OK | ||
Línia 255: | Línia 255: | ||
Aquesta informació també la donarà en una configuració per defecte en escriure una url del servidor que faci referència a una pàgina que no existeix. | Aquesta informació també la donarà en una configuració per defecte en escriure una url del servidor que faci referència a una pàgina que no existeix. | ||
+ | {{:: | ||
+ | |||
+ | Per a configurar que no es mostri aquesta informació, | ||
+ | |||
+ | Comandes: | ||
+ | $ sudo nano / | ||
+ | |||
+ | Actualitzar els valors a: | ||
+ | ServerTokens Prod | ||
+ | ServerSignature Off | ||
+ | |||
+ | Reiniciar el servei apache: | ||
+ | sudo systemctl restart apache2 | ||
+ | |||
+ | I provem la informació que retorna després d’aquest canvi de configuració. | ||
+ | |||
+ | Comanda: | ||
+ | $ curl -I localhost | ||
+ | | ||
+ | HTTP/1.1 200 OK | ||
+ | Date: Tue, 05 Jul 2022 17:05:39 GMT | ||
+ | Server: Apache | ||
+ | Last-Modified: | ||
+ | ETag: " | ||
+ | Accept-Ranges: | ||
+ | Content-Length: | ||
+ | Vary: Accept-Encoding | ||
+ | Content-Type: | ||
+ | |||
+ | Mirem la informació que retorna ara amb una url d’una pàgina que no existeix: | ||
+ | |||
+ | {{:: | ||
+ | |||
+ | <WRAP todo> | ||
+ | Exercici: | ||
+ | |||
+ | Busca les diferents opcions per a la configuracio de ServerSignature i de ServerTokens. | ||
+ | </ | ||
+ | |||
+ | Solució: | ||
+ | ServerSignature – appears at the bottom of server generated pages such as error pages, | ||
+ | directory listings, etc. | ||
+ | It takes On/ | ||
+ | Admin’s email. | ||
+ | |||
+ | ServerTokens options - | ||
+ | | ||
+ | ServerTokens Full (or not specified) | ||
+ | Response to clients: Server: Apache/ | ||
+ | | ||
+ | ServerTokens Prod[uctOnly] | ||
+ | Response to clients: Server: Apache | ||
+ | | ||
+ | ServerTokens Major | ||
+ | Response to clients: Server: Apache/2 | ||
+ | | ||
+ | ServerTokens Minor | ||
+ | Response to clients: Server: Apache/2.4 | ||
+ | | ||
+ | ServerTokens Min[imal] | ||
+ | Response to clients: Server: Apache/ | ||
+ | | ||
+ | ServerTokens OS | ||
+ | Response to clients: Server: Apache/ | ||
\\ | \\ | ||
+ | |||
+ | ===== Limitacions tècniques del web scraping ===== | ||
+ | |||
+ | Per als operadors de les pàgines web sol ser **avantatjós limitar les possibilitats de scraping automàtic en el seu contingut en línia**. D'una banda, perquè l' | ||
+ | |||
+ | Per limitar l' | ||
+ | |||
+ | A continuació, | ||
+ | |||
+ | Comandes: | ||
+ | # Qualsevol bot | ||
+ | User-agent: * | ||
+ | # Excloure tot el directori principal | ||
+ | Disallow: / | ||
+ | |||
+ | |||
+ | El fitxer robots.txt només actua com a mesura de seguretat ja que convida a una limitació voluntària per part dels bots, que s' | ||
+ | |||
+ | ===== Les API com a alternativa al web scraping ===== | ||
+ | |||
+ | Tot i la seva efectivitat, | ||
+ | |||
+ | L'ús d'una API ofereix avantatges importants: | ||
+ | |||
+ | * **El propietari de la web crea l'API precisament per permetre accedir a les dades**. D' | ||
+ | * **L' | ||
+ | |||
+ | Sempre que hi hagi una API disponible i que ofereixi dades completes, aquest serà **el millor mètode per accedir a la informació**, | ||
+ | |||
+ | ===== Eines de scraping per a Python ===== | ||
+ | |||
+ | L' | ||
+ | * Scrapy | ||
+ | * Selenium | ||
+ | * BeautifulSoup | ||
+ | |||
+ | A continuació, | ||
+ | |||
+ | **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' | ||
+ | |||
+ | 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' | ||
+ | |||
+ | **Web scraping amb Selenium** | ||
+ | |||
+ | El programari lliure Selenium és un // | ||
+ | |||
+ | A diferència de Scrapy i BeautifulSoup, | ||
+ | |||
+ | 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: | ||
+ | |||
+ | 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' | ||
+ | |||
+ | <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. | ||
+ | </ | ||