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>