In [1]:
import urllib2
from bs4 import BeautifulSoup
from pprint import pprint
from datetime import datetime
In [2]:
import pymongo

from pymongo import Connection
c = Connection()
c['espace5'].drop_collection('forums')

c = pymongo.MongoClient()
db = c['espace5']
forum_messages = db['forums']
In [3]:
data = []
url = "http://www.forum-auto.com/marques/renault/sujet5226-"

for scan in range(0,2241,35):
    scan_page = url+str(scan+1260)+'.htm'
    page = urllib2.urlopen(scan_page)
    soup = BeautifulSoup(page)
    case1 = soup.findAll("td", { "class" : "messCase1" })
    case2 = soup.findAll("td", { "class" : "messCase2" })
    for x,y in zip(case1, case2):
        try:
            user_id = x.find("span").text
            date_posted = y.find("div", { "class" : "toolbar" }).text
            date_posted = datetime.strptime(date_posted[9:19]+" "+date_posted[22:30], '%d-%m-%Y %H:%M:%S')
            try:
                y.find("div", { "class" : "toolbar" }).extract()
            except:
                pass
            try:
                y.find("table", { "class" : "citation" }).extract()
            except:
                pass
            try:
                y.find("div", { "class" : "edited" }).extract()
            except:
                pass
            try:
                y.find("div", { "class" : "edited" }).extract()
            except:
                pass
            try:
                y.find("span", { "class" : "signature" }).extract()
            except:
                pass

            doc = {'text': y.getText(" "), 'user': user_id, 'date': date_posted , 'forum_id' : 'forum-auto-secrets-espace-5'}
            forum_messages.save(doc)
        except:
            pass
In [4]:
forum_messages.count()
Out[4]:
2303
In [5]:
m = forum_messages.find_one()
print m['text']

 Reprise du message précédent : J'ai participé à celui de ce jour. Il est très beau, très pur et enfin des technologies nouvelles sur une Renault. Très impressionné par le niveau technologique général. J'espère que la clientèle visée sera sensible à tout cela. NEW GAMME DACIA, CLIO IV, CAPTUR, TWINGO 3, FUTUR ESPACE (on ne connait pas encore son nom..) : RENAULT RESSORT VRAIEMENT TRES TRES FORT DE LA CRISE LE GROUPE RENAULT EST ENTRAIN DE DEVENIR UN HIT AUTOMOBILE, nous pouvons être très fier de ce que réalise l'entreprise depuis 3 ans 

In [6]:
url = "http://www.passion-espace-club.com/viewtopic.php?f=59&t=2099&start="

for scan in range(0,126,25):
    scan_page = url+str(scan+75)
    page = urllib2.urlopen(scan_page)
    soup = BeautifulSoup(page)
    case = soup.findAll("div", { "class" : "postbody" })
    for x in case:
        xa = x.find("p", { "class" : "author" })
        xm = xa.find("strong")
        user_id = xm.text
        xm.extract()
        date_posted = xa.text[7:11]+xa.text[13:-1]
        mapping = { 'S':'09', 'O':'10', 'N':'11', 'D':'12', 'J':'01', 'F':'02',  'M':'03'}
        for k, v in mapping.iteritems():
            date_posted = date_posted.replace(k, v)
        date_posted = datetime.strptime(date_posted, '%d %m %Y, %H:%M')
        try:
            x.find("blockquote").extract()
        except:
            pass
        xtext = x.find("div", { "class" : "content" }).getText(" ")

        doc = {'text': xtext, 'user': user_id, 'date': date_posted , 'forum_id' : 'passion-espace-club'}
        forum_messages.save(doc)
In [7]:
forum_messages.count()
Out[7]:
2431
In [8]:
m = forum_messages.find_one({'forum_id' : 'passion-espace-club'})
print m['text']
Avant de tirer sur le pianiste, attendez au moins de le voir ! Toutes les photos que l'on trouve sont soit très ancienne (mars20414 !) ou camouflées.

In [9]:
url = "http://www.planeterenault.com/forum/espace-v-jfc-la-cinquieme-generation-d-espace-sorti-t18600-"

for scan in range(0,793,18):
    scan_page = url+str(scan+2250)+'.html'
    page = urllib2.urlopen(scan_page)
    soup = BeautifulSoup(page)
    rows = soup.findAll("table", { "class" : "row1" })
    rows += soup.findAll("table", { "class" : "row2" })
    for row in rows:
        user = row.find("td", { "class" : "user" })
        user_id = user.find("span", { "class" : "auteurPost" }).text.strip(' \t\n\r').rstrip(' \t\n\r')
        user.extract()
        message_id = row.find("a")['href']
        message_id = message_id[1+message_id.index('#'):]
        date_raw = row.find("a").parent
        date_posted = date_raw.text.lstrip(' \t\n\r').rstrip(' \t\n\r')
        date_posted = date_posted[4:8]+date_posted[11:]
        mapping = { 'S':'09', 'O':'10', 'N':'11', 'D':'12', 'J':'01', 'F':'02',  'M':'03'}
        for k, v in mapping.iteritems():
            date_posted = date_posted.replace(k, v)
        date_posted = datetime.strptime(date_posted, '%d %m %Y %H:%M:%S')
        date_raw.extract()
        message_raw = row.find("div", { "id" : "message_"+message_id })
        try:
            message_raw.find("table").extract()
        except:
            pass
        message = message_raw.getText(" ").lstrip(' \t\n\r').rstrip(' \t\n\r')

        doc = {'text': message, 'user': user_id, 'date': date_posted , 'forum_id' : 'planeterenault-espace-5'}
        forum_messages.save(doc)
In [10]:
forum_messages.count()
Out[10]:
3224
In [11]:
m = forum_messages.find_one({'forum_id' : 'planeterenault-espace-5'})
print m['text']
Ca correspond à la capture d'écran faite en début d'été lors d'une présentation aux cadres Renault : commercialisation en avril 2015.

In [12]:
print forum_messages.find({'forum_id' : 'forum-auto-secrets-espace-5'}).count()
print forum_messages.find({'forum_id' : 'passion-espace-club'}).count()
print forum_messages.find({'forum_id' : 'planeterenault-espace-5'}).count()
2303
128
793