2010-03-09 8 views
1

Je veux gratter cette URL: https://www.xstreetsl.com/modules.php?searchSubmitImage_x=0&searchSubmitImage_y=0&SearchLocale=0&name=Marketplace&SearchKeyword=business&searchSubmitImage.x=0&searchSubmitImage.y=0&SearchLocale=0&SearchPriceMin=&SearchPriceMax=&SearchRatingMin=&SearchRatingMax=&sort=&dir=ascJe veux gratter un site en utilisant GAE et afficher les résultats dans une Google entité

Allez dans chacun des liens et en extraire divers éléments d'information par exemple autorisations, prims, etc., puis publiez les résultats dans une entité sur google app engine.

Je veux savoir comment s'y prendre?

Chris

Répondre

3

Pour normaliser le HTML en utilisant une pure bibliothèque Python, j'ai eu de meilleures expériences avec html5lib que BeautifulSoup.

Cependant, vous souhaitez simplement extraire des informations structurées simplement, ce qui ne nécessite pas de normaliser le code HTML. J'ai quelques applications de grattage sur Google App Engine qui utilisent my own xpath library qui fonctionne avec du HTML brut. Vous pouvez également utiliser des expressions régulières pour des tâches uniques.

3

Il y a plusieurs bibliothèques de grattage d'écran belle que vous pouvez utiliser en Python.

Peut-être le plus facile de frapper un grattoir avancé est scrapy. Il s'appuie sur Twisted pour implémenter le moteur principal mais fournit une interface très facile à utiliser pour implémenter le code de grattage personnalisé.

Sinon, vous pouvez envisager de le faire plus manuellement avec quelque chose comme BeautifulSoup, ou Mechanize qui fournit une implémentation de navigateur "mécanique".

BeautifulSoup et Mechanize devraient tous deux fonctionner dès la sortie de la boîte sur App Engine - il fournit une enveloppe autour de httplib et urllib qui utilise urlfetch comme backend. Seul le scrapy sera problématique, en raison de son utilisation de torsadé. [merci à Nick Johnson pour la mise à jour].

+2

GAE fournit le module urlfetch comme moyen de contourner la restriction d'ouverture de socket. –

+0

@gnibbler: c'est bon à savoir: je suppose que le problème est que ça ne marchera pas avec les frameworks que j'ai listés, donc ça voudrait dire écrire quelque chose à partir de zéro. BeuatifulSoup pourrait encore être utilisé pour traiter les résultats. Merci pour le heads-up +1. – jkp

+0

vous pouvez toujours utiliser urllib2 sur GAE, mais il est ensuite enroulé autour d'urlfetch, avec quelques fonctionnalités supprimées – hoju

Questions connexes