J'ai besoin d'un freelance (inscription grauite)

'

Script permettant d’extraire les visiteurs d’un blog

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)

Pensez à partager l'article!
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Encore + de lecture:

Trouvez votre Freelance pour faire avancer vos projets. Essayez Fiverr!

Cliquez ici si vous cherchez un designer pour votre logo, un webmarketer pour votre site internet, un expert business ou analyste big data.

Le coin des achats professionnels