Script permettant d’extraire les visiteurs d’un blog

Entreprendre

Je vous avais déjà parlé dans un précédent article de l’ancienne fonctionnalité de Viadeo qui permettait d’extraire la liste de toutes les personnes connectées qui étaient passés sur votre site internet.

Maintenant que la fonctionnalité n’est plus disponible, je m’étais amusé à écrire ces quelques lignes de code en Python permettant d’aller chercher l’information sur toutes les pages de la fonctionnalité et d’écrire toute cette information directement dans une table dans une base de données. J’utilisais les lib mechanize (pour appeler les URL) et beautifulsoup (pour parser) En espérant que ce code inspirera d’autres développeurs….

 


#!/usr/bin/python
# -*- coding: utf-8 -*-

import mechanize
import MySQLdb
from  bs4 import BeautifulSoup

url='http://www.viadeo.com/blogs/listeblogs/?showUrlId=0021acu8yayhxxex&pageNumber=2#blog0'

class ScrapeViadeo():
	"""permet de scraper viadeo pour recuperer la liste des personnes qui
	ont consulté un blog et store le tout dans une table"""


	def seConnecterAViadeo(self,url,login,password):
		""" pour se connecter à viadeo et aller recuperer la bonne page
		avec l'affichage des personnes qui sont venues sur le site internet"""

		#dans un premier temps, on se loggue
		browser=mechanize.Browser()
		browser.set_handle_robots(False)
		browser.open(url)
		browser.select_form(name="ident")		
		browser["email"]=login
		browser["password"]=password
		response=browser.submit()
		#puis on va recuperer la page 1) avec les noms des personnes qui sont venues sur le site internet
		self.urlStartToCrawl="http://www.viadeo.com/blogs/listeblogs/"
		while 1:
			url=browser.open(self.urlStartToCrawl)
			self.recupererContactsOnPage(url)



	def recupererContactsOnPage(self, url):
		""" fonction permettant d'aller recuperer les contacts sur
		une page donnee"""
		soup=BeautifulSoup(url)
		table=soup.find('table',{"class":"recordset"})
		rows=table.findAll('tr')
		db=MySQLdb.connect("localhost", "root","sdfsdf","experience")
		cursor=db.cursor()
		for tr in rows[1:]:
			cols=[]
			tede=tr.findAll('td')
			for td in tede:
				if td.find(text=True) is None:
					text='none'
				else:
					chp=td.find(text=True)
					text=chp.replace("'"," ")
				cols.append(text)
			sql="insert into CONTACT_VIADEO values('%s', '%s', '%s', '%s', '%s', '%s')" % (cols[0],cols[1],cols[2],cols[3],cols[4],cols[5])
			print sql
			try:
				cursor.execute(sql)
				db.commit()
			except:
				print "echec, ligne suivante!"
		cursor.close()
		db.close()	
		try:
			classCss=soup.find('a', {"class":"nextPage"})
			newHref=classCss.get('href')
			
		except:
			
			print "fin des pages - scrape over!"	
		if newHref is not None:
			self.urlStartToCrawl="http://www.viadeo.com"+str(newHref)	
			return self.urlStartToCrawl



#identifiants de connexion a viadeo
urlAccueil="http://www.viadeo.com/fr/"
login="monLogin"
password="motDePasse"

scrape=ScrapeViadeo()
scrape.seConnecterAViadeo(urlAccueil,login,password)

Fiverr, la plateforme avec des milliers d'offres de freelances

Découvrez notre séléction de produits pour les particuliers et professionnels.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *