517
Comment:
|
← Revision 17 as of 2017-03-18 01:13:13 ⇥
3061
|
Deletions are marked like this. | Additions are marked like this. |
Line 5: | Line 5: |
La Cultura è la nostra Natura, siamo cacciatori e raccoglitori in un mondo di dati. | La Cultura è la nostra Natura, siamo cacciatori e raccoglitori in un mondo di informazione. |
Line 13: | Line 13: |
Serie di pomeriggi di sperimentazione libera, segue workshop rivolto al pubblico. == Temi == |
|
Line 17: | Line 21: |
* Beautiful-soup per il parsing delle pagine | * Beautiful-soup e/o lxml per il parsing delle pagine * Web spider con scrapy |
Line 19: | Line 24: |
== Riferimenti Sparsi == * https://elitedatascience.com/python-web-scraping-libraries * https://first-web-scraper.readthedocs.io/en/latest/ * https://medium.com/@kaismh/extracting-data-from-websites-using-scrapy-e1e1e357651a * https://deshmukhsuraj.wordpress.com/2015/03/08/anonymous-web-scraping-using-python-and-tor/ == Terminale == === curl === {{{ curl "http://www.example.com" }}} esegue una GET e ne stampa l'output {{{ curl -o out.html "http://www.example.com" }}} ora l'output è salvato sul file ''out.html'' === wget === {{{ wget "http://www.example.com/index.html" }}} salva in contenuto in ''index.html'' {{{ wget -r "http://www.example.com/" }}} salva '''tutto''' il contenuto del sito nella directory corrente === Python === {{{ python3 script.py }}} esegue uno script {{{ python3 script.py > out.txt }}} esegue uno script e ne salva l'output in ''out.txt'' == Codice == === Scraping === Stampa l'elenco degli spazi di Macao: {{{#!highlight python3 #!/usr/bin/env python3 import requests from bs4 import BeautifulSoup url = "http://www.macaomilano.org/spip.php?rubrique18" r = requests.get(url) page = r.text soup = BeautifulSoup(page, "html.parser") h2s = soup.findAll("h2") spazi = [h2.text for h2 in h2s] print("\n".join(spazi)) }}} Stesso raccolto, ma con XPath :) {{{#!highlight python3 #!/usr/bin/env python from lxml import html from io import BytesIO import requests as reqs # FF XPath Plugin: # https://addons.mozilla.org/en-US/firefox/addon/xpath-checker/ url = "http://macaomilano.org/spip.php?rubrique18" r = reqs.get(url) doc = html.parse(BytesIO(r.content)) titles = doc.xpath("id('container')/div/section/header/h2/a/span/text()") for t in titles: print(t) }}} === Fake user-agent === {{{#!highlight python3 headers = requests.utils.default_headers() headers.update({"User-Agent": "Mozilla/5.0"}) r = requests.get(url, headers=headers) }}} === Getting nasty === Passare per Tor: {{{#!highlight python3 import socks import socket import requests # Prima print(requests.get("http://icanhazip.com").text) socks.setdefaultproxy(proxy_type=socks.PROXY_TYPE_SOCKS5, addr="127.0.0.1", port=9050) socket.socket = socks.socksocket # Dopo print(requests.get("http://icanhazip.com").text) }}} |
Costruzione Utensili
La Cultura è la nostra Natura, siamo cacciatori e raccoglitori in un mondo di informazione.
Prerequisiti
- Un'idea vaga di HTML
- Saper scrivere, o anche solo leggere un qualsiasi linguaggio
Programma
Serie di pomeriggi di sperimentazione libera, segue workshop rivolto al pubblico.
Temi
Ancora da definire, ma a grandi linee:
- Orientarsi con l'inspector del Browser
- Rudimenti di web scraping con Python:
- GET e fake-user agent con requests
- Beautiful-soup e/o lxml per il parsing delle pagine
- Web spider con scrapy
- wget e qualcosa di bash?
Riferimenti Sparsi
https://medium.com/@kaismh/extracting-data-from-websites-using-scrapy-e1e1e357651a
https://deshmukhsuraj.wordpress.com/2015/03/08/anonymous-web-scraping-using-python-and-tor/
Terminale
curl
curl "http://www.example.com"
esegue una GET e ne stampa l'output
curl -o out.html "http://www.example.com"
ora l'output è salvato sul file out.html
wget
wget "http://www.example.com/index.html"
salva in contenuto in index.html
wget -r "http://www.example.com/"
salva tutto il contenuto del sito nella directory corrente
Python
python3 script.py
esegue uno script
python3 script.py > out.txt
esegue uno script e ne salva l'output in out.txt
Codice
Scraping
Stampa l'elenco degli spazi di Macao:
1 #!/usr/bin/env python3
2 import requests
3 from bs4 import BeautifulSoup
4
5 url = "http://www.macaomilano.org/spip.php?rubrique18"
6 r = requests.get(url)
7 page = r.text
8
9 soup = BeautifulSoup(page, "html.parser")
10
11 h2s = soup.findAll("h2")
12 spazi = [h2.text for h2 in h2s]
13
14 print("\n".join(spazi))
Stesso raccolto, ma con XPath
1 #!/usr/bin/env python
2 from lxml import html
3 from io import BytesIO
4 import requests as reqs
5
6
7 # FF XPath Plugin:
8 # https://addons.mozilla.org/en-US/firefox/addon/xpath-checker/
9
10
11 url = "http://macaomilano.org/spip.php?rubrique18"
12 r = reqs.get(url)
13 doc = html.parse(BytesIO(r.content))
14 titles = doc.xpath("id('container')/div/section/header/h2/a/span/text()")
15 for t in titles:
16 print(t)
Fake user-agent
Getting nasty
Passare per Tor:
1 import socks
2 import socket
3 import requests
4
5 # Prima
6 print(requests.get("http://icanhazip.com").text)
7
8 socks.setdefaultproxy(proxy_type=socks.PROXY_TYPE_SOCKS5,
9 addr="127.0.0.1",
10 port=9050)
11
12 socket.socket = socks.socksocket
13
14 # Dopo
15 print(requests.get("http://icanhazip.com").text)