¿Cuál es la forma más sencilla de eliminar solo el texto de un puñado de páginas web (usando una lista de URL) usando BeautifulSoup? ¿Es posible?Python: la forma más sencilla de eliminar texto de la lista de URL usando BeautifulSoup
mejor, Georgina
¿Cuál es la forma más sencilla de eliminar solo el texto de un puñado de páginas web (usando una lista de URL) usando BeautifulSoup? ¿Es posible?Python: la forma más sencilla de eliminar texto de la lista de URL usando BeautifulSoup
mejor, Georgina
import urllib2
import BeautifulSoup
import re
Newlines = re.compile(r'[\r\n]\s+')
def getPageText(url):
# given a url, get page content
data = urllib2.urlopen(url).read()
# parse as html structured document
bs = BeautifulSoup.BeautifulSoup(data, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
# kill javascript content
for s in bs.findAll('script'):
s.replaceWith('')
# find body and extract text
txt = bs.find('body').getText('\n')
# remove multiple linebreaks and whitespace
return Newlines.sub('\n', txt)
def main():
urls = [
'http://www.stackoverflow.com/questions/5331266/python-easiest-way-to-scrape-text-from-list-of-urls-using-beautifulsoup',
'http://stackoverflow.com/questions/5330248/how-to-rewrite-a-recursive-function-to-use-a-loop-instead'
]
txt = [getPageText(url) for url in urls]
if __name__=="__main__":
main()
Ahora elimina javascript y decodifica entidades html.
Es perfectamente posible. La manera más fácil es recorrer la lista de URL, cargar el contenido, buscar las URL y agregarlas a la lista principal. Detener la iteración cuando se encuentran suficientes páginas.
sólo algunos consejos:
urllib2.urlopen
para ir a buscar el contenidoBeautifulSoup
: findAll ('A') para las direcciones URL para encontrarSé que no es una respuesta correcta (acerca de BeautifulSoup) pero una buena idea es echar un vistazo a Scrapy que parece ajustarse a sus necesidades.
¡Increíble! Muchas gracias, @Hugh Bothwell! – Georgina