Ecco due metodi, entrambi in Python, per loggare in un sito tramite uno script automatizzato per poter estrapolare dati da esso.

Un esempio del primo metodo, che usa la libreria mechanize:
(se non avete il nome del form potete mettere il valore “nr=0” per prendere il primo form della pagina).

import mechanize

url='http://www.esempio.it/index.php'
browser = mechanize.Browser()

browser.open(url)

browser.select_form(name="form1") #nome associato al form (bisogna visualizzarlo nella sorgente HTML)
browser["username"] = 'USERNAME' #al posto di "username" dovete mettere il nome associato al campo vedendolo dalla sorgente HTML
browser["password"] = 'PASSWORD'#al posto di "password" dovete mettere il nome associato al campo vedendolo dalla sorgente HTML
browser.new_control("HIDDEN", "action", {})
control = browser.form.find_control("action")
control.readonly = False
browser["action"] = "login"
browser.method = "POST"
browser.action = url

response = browser.submit()

data=browser.open('http://www.esempio.it/contenuto.php').read()
print data

Il secondo metodo (scritto da “tehryan”) usa le librerie urllib, urllib2 e cookielib ed è più efficace del primo, poichè ad esempio siti come facebook dispongono di un sistema che blocca mechanize impedendogli di loggare.

import urllib, urllib2, cookielib

class Acc:
    jar = cookielib.CookieJar()
    cookie = urllib2.HTTPCookieProcessor(jar)       
    opener = urllib2.build_opener(cookie)

    headers = {
        "User-Agent" : "Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.14) Gecko/20080609 Firefox/2.0.0.14",
        "Accept" : "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,text/png,*/*;q=0.5",
        "Accept-Language" : "en-us,en;q=0.5",
        "Accept-Charset" : "ISO-8859-1",
        "Content-type": "application/x-www-form-urlencoded",
        "Host": "m.facebook.com"
    }

    def login(self, email, pwd):
        try:
        params = urllib.urlencode({'email': email,'pass':pwd,'login':'Log+In'})
        req = urllib2.Request('http://m.facebook.com/login.php?m=m&refsrc=m.facebook.com%2F', params, self.headers)
        res = self.opener.open(req)
        html = res.read()
    except urllib2.HTTPError, e:
        print e.msg
    except urllib2.URLError, e:
        print e.reason[1]
        return False

    def fetch(self,url):
        req = urllib2.Request(url,None,self.headers)
    try:
        res = self.opener.open(req)
    except urllib2.URLError, e:
        print e.reason
        return res.read()