Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#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

En 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

Haut de page ↑