web-dev-qa-db-fra.com

Python Web Crawlers et "obtention" du code source html

Mon frère voulait donc que j'écrive un robot d'exploration en Python (autodidacte) et je connais le C++, Java et un peu de HTML. J'utilise la version 2.7 et je lis la bibliothèque python, mais j'ai quelques problèmes 1. Le concept httplib.HTTPConnection Et request est nouveau et je ne comprends pas s'il télécharge un script html comme un cookie ou une instance. Si vous faites les deux, obtenez-vous la source d'une page de site Web? Et quels sont les mots que j'aurais besoin de savoir pour modifier la page et retourner la page modifiée.

Juste pour le fond, je dois télécharger une page et remplacer n'importe quel img par ceux que j'ai

Et ce serait bien si vous pouviez me dire votre avis sur 2.7 et 3.1

18
Dan

Utilisez Python 2.7, a plus de bibliothèques tierces pour le moment. ( Modifier: voir ci-dessous).

Je vous recommande d'utiliser le module stdlib urllib2, il vous permettra d'obtenir confortablement des ressources Web. Exemple:

import urllib2

response = urllib2.urlopen("http://google.de")
page_source = response.read()

Pour analyser le code, consultez BeautifulSoup.

BTW: que voulez-vous faire exactement:

Juste pour le fond, je dois télécharger une page et remplacer n'importe quel img par ceux que j'ai

Edit: C'est 2014 maintenant, la plupart des bibliothèques importantes ont été portées, et vous devez absolument utiliser Python 3 si vous pouvez. python-requests est une très belle bibliothèque de haut niveau qui est plus facile à utiliser que urllib2.

43
leoluk

Un exemple avec python3 et la bibliothèque requests comme mentionné par @leoluk:

pip install requests

Script req.py:

import requests

url='http://localhost'

# in case you need a session
cd = { 'sessionid': '123..'}

r = requests.get(url, cookies=cd)
# or without a session: r = requests.get(url)
r.content

Maintenant, exécutez-le et vous obtiendrez la source html de localhost!

python3 req.py

9
Timo

La première chose que vous devez faire est de lire le spécification HTTP qui expliquera ce que vous pouvez vous attendre à recevoir sur le fil. Les données renvoyées à l'intérieur du contenu seront la page Web "rendue", pas la source. La source pourrait être un JSP, un servlet, un script CGI, bref, à peu près n'importe quoi, et vous n'y avez pas accès. Vous obtenez uniquement le code HTML que le serveur vous a envoyé. Dans le cas d'une page HTML statique, alors oui, vous verrez la "source". Mais pour toute autre chose, vous voyez le code HTML généré, pas la source.

Quand tu dis modify the page and return the modified page Que voulez-vous dire?

0
Jim Garrison