J'ai besoin d'analyser une URL pour obtenir une liste d'URL qui pointent vers une page de détails. Ensuite, à partir de cette page, j'ai besoin d'obtenir tous les détails de cette page. Je dois le faire de cette façon car l'URL de la page de détails n'est pas régulièrement incrémentée et change, mais la page de la liste des événements reste la même.
Fondamentalement:
example.com/events/
<a href="http://example.com/events/1">Event 1</a>
<a href="http://example.com/events/2">Event 2</a>
example.com/events/1
...some detail stuff I need
example.com/events/2
...some detail stuff I need
import urllib2
from BeautifulSoup import BeautifulSoup
page = urllib2.urlopen('http://yahoo.com').read()
soup = BeautifulSoup(page)
soup.prettify()
for anchor in soup.findAll('a', href=True):
print anchor['href']
Il vous donnera la liste des URL. Vous pouvez maintenant parcourir ces URL et analyser les données.
inner_div = soup.findAll("div", {"id": "y-shade"})
Ceci est un exemple. Vous pouvez parcourir les tutoriels BeautifulSoup.Pour le prochain groupe de personnes qui rencontrent cela, BeautifulSoup a été mis à niveau vers la v4 à partir de ce message car la v3 n'est plus mise à jour.
$ easy_install beautifulsoup4
$ pip install beautifulsoup4
Pour utiliser en Python ...
import bs4 as BeautifulSoup
Utilisez urllib2 pour obtenir la page, puis utilisez une belle soupe pour obtenir la liste des liens, essayez également scraperwiki.com
Éditer:
Découverte récente: utilisation de BeautifulSoup via lxml avec
from lxml.html.soupparser import fromstring
est mieux que Miles BeautifulSoup. Il vous permet de faire dom.cssselect ("votre sélecteur") qui est un épargnant de vie. Assurez-vous simplement d'avoir installé une bonne version de BeautifulSoup. 3.2.1 fonctionne un régal.
dom = fromstring('<html... ...')
navigation_links = [a.get('href') for a in htm.cssselect('#navigation a')]