J'essaie de créer un grattoir Web qui analysera une page Web de publications et extraire les auteurs. La structure squelettique de la page Web est la suivante:
import re import urllib2,sys import lxml from lxml import etree from lxml.html.soupparser import fromstring from lxml.etree import tostring from lxml.cssselect import CSSSelector from BeautifulSoup import BeautifulSoup, NavigableString address='http://www.example.com/' html = urllib2.urlopen(address).read() soup = BeautifulSoup(html) html=soup.prettify() html=html.replace(' ', ' ') html=html.replace('í','í') root=fromstring(html)
4 Réponses :
Ce n'est pas clair pour moi de votre question pourquoi vous devez vous inquiéter des balises div code> - Qu'en est-il de:
thetds = soup.findAll('td', attrs={'class': 'author'})
for thetd in thetds:
print thetd.string
Merci, Alex. J'ai plusieurs auteurs sur la page, alors je vais avoir plusieurs tags TD. Comment puis-je itération sur chacun d'eux?
beauxoupe est certainement l'analyseur / processeur HTML canonique. Mais si vous avez juste ce type d'extrait, vous devez faire correspondre, au lieu de construire un objet hiérarchique entier représentant le HTML, PyparSing facilite la définition des balises HTML principales et suivantes dans le cadre de la création d'une expression de recherche plus importante:
from pyparsing import makeHTMLTags, withAttribute, SkipTo author_td, end_td = makeHTMLTags("td") # only interested in <td>'s where class="author" author_td.setParseAction(withAttribute(("class","author"))) search = author_td + SkipTo(end_td)("body") + end_td for match in search.searchString(html): print match.body
Ou vous pouvez utiliser PYQUERY, car BELLESUP n'est plus entretenu activement, voir http://www.crummy.com/software/beautifulsoup/3.1-problems.html
Tout d'abord, installez la pyquery avec p> alors votre script pourrait Soyez aussi simple que P> from pyquery import PyQuery
d = PyQuery('http://mywebpage/')
allauthors = [ td.text() for td in d('td.author') ]
La bibliothèque LXML est maintenant la norme pour analyse HTML en Python. L'interface peut sembler maladroite au début, mais elle est très utilisée pour ce qu'elle fait.
Vous devez laisser la liberge de gérer le spécialiste XML, telle que celles évasées et entités; p>