Contenu | Rechercher | Menus

Annonce

Ubuntu-fr.org recrute toujours de nouveaux modérateurs, avec de l'expérience.

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Si vous avez des soucis pour rester connecté, déconnectez vous et reconnectez vous depuis ce lien en cochant le case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 20/10/2013, à 14:05

lanzrg

Scraper un site simple (sans AJAX) en python + download ?

Bonjour,

Je souhaite scraper le site de sublime text 3 afin de récupérer l'url de la dernière version stable.
Pour ensuite la télécharger. Tout ceci en Python évidemment.

Ce que j'ai et qui à l'air de fonctionner (n'hésitez pas à me dire que c'est à chier roll).

import lxml.etree
import lxml.html
import re

# HTML
site = "http://www.sublimetext.com/3"
html = lxml.html.parse(site)

# Ce que je voudrais avoir :
# Sublime Text 3 is currently in beta. The latest build is 3047.
# Helas j'ai une erreur.
elem = html.cssselect('.post > p:nth-child(2)')
print elem

# Ce que je voudrais avoir :
# 3047
# Je n'y suis pas encore.

# Reconstruire l'url pour le download.

# Et enfin telecharger le deb ou exe
# Je ne sais pas trop comment y parvenir.
# Particulierement sur la partie recuperation du filename.

J'ai une erreur lors de mon dernier print. A quoi est-ce du ?

AttributeError: 'lxml.etree._ElementTree' object has no attribute 'cssselect'

Merci d'avance

Dernière modification par lanzrg (Le 20/10/2013, à 14:16)

Hors ligne

#2 Le 20/10/2013, à 14:11

k3c

Re : Scraper un site simple (sans AJAX) en python + download ?

On peut voir ton code ?

Tu veux aller à
http://www.sublimetext.com/3

et ensuite tu veux le build 3033 ou 3047 ou ... ?


Acer Aspire One 150 8,9 "
Norhtec avec une Clé Usb bootable http://www.norhtec.com/products/mcsr/index.html

Toshiba Satellite L750

Hors ligne

#3 Le 20/10/2013, à 16:49

grim7reaper

Re : Scraper un site simple (sans AJAX) en python + download ?

Salut,

Ton problème c’est que tu oublies de faire un getroot sur ta page HTML parsée pour avoir l’élément root sur lequel appliquer ton sélecteur CSS.

Voilà un rapide script d’exemple (attention, aucune gestion d’erreur et je pars sur le principe que tu veux télécharger la version Ubuntu 64-bit) :

#!/usr/bin/env python3

from re import search
from urllib.request import urlretrieve
from lxml.html import parse

# Website address.
URL = 'http://www.sublimetext.com/3'
# For Ubuntu 64-bit
DL_PATTERN = 'http://c758482.r82.cf2.rackcdn.com/sublime_text_3_build_XXX_x64.tar.bz2'

# Retrieve the page.
page = parse(URL).getroot()
# Extract the build information.
build_info = page.cssselect('.post > p:nth-child(2)')[0].text
# Extract latest build number.
matches = search(r'(\d+)\.$', build_info)
version = matches.group(1)
# Build the download URL.
dl_url = DL_PATTERN.replace('XXX', version)
# Download the file.
urlretrieve(dl_url, 'SublimeText3.tar.bz2')

Hors ligne