tutorial script scraping how examples español code python web-scraping beautifulsoup web-crawler html5lib

python - script - Análisis con BeautifulSoup, mensaje de error TypeError: coercing a Unicode: need string o buffer, NoneType found



web scraping python examples (0)

así que estoy intentando buscar datos en una página de Amazon y me aparece un error cuando intento analizar el lugar donde se encuentra el vendedor. Aquí está mi código:

#getting the html request = urllib2.Request(''http://www.amazon.com/gp/offer-listing/0393934241/'') opener = urllib2.build_opener() #hiding that I''m a webscraper request.add_header(''User-Agent'', ''Mozilla/5 (Solaris 10) Gecko'') #opening it up, putting into soup form html = opener.open(request).read() soup = BeautifulSoup(html, "html5lib") #parsing for the seller info sellers = soup.findAll(''div'', {''class'' : ''a-row a-spacing-medium olpOffer''}) for eachseller in sellers: #parsing for price price = eachseller.find(''span'', {''class'' : ''a-size-large a-color-price olpOfferPrice a-text-bold''}) #parsing for shipping costs shippingprice = eachseller.find(''span'' , {''class'' : ''olpShippingPrice''}) #parsing for condition condition = eachseller.find(''span'', {''class'' : ''a-size-medium''}) #parsing for seller name sellername = eachseller.find(''b'') #parsing for seller location location = eachseller.find(''div'', {''class'' : ''olpAvailability''}) #printing it all out print "price, " + price.string + ", shipping price, " + shippingprice.string + ", condition," + condition.string + ", seller name, " + sellername.string + ", location, " + location.string

Aparece el mensaje de error, que pertenece al comando ''print'' al final: TypeError: coercing to Unicode: need string or buffer, NoneType found

Sé que viene de esta línea: location = eachseller.find(''div'', {''class'' : ''olpAvailability''}) - porque el código funciona bien sin esa línea, y sé que estoy obteniendo NoneType porque el línea no está encontrando nada. Aquí está el html de la sección que quiero analizar:

<div class="olpAvailability"> In Stock. Ships from WI, United States. <br/><a href="/gp/aag/details/ref=olp_merch_ship_9/175-0430757-3801038?ie=UTF8&amp;asin=0393934241&amp;seller=A1W2IX7T37FAMZ&amp;sshmPath=shipping-rates#aag_shipping">Domestic shipping rates</a> and <a href="/gp/aag/details/ref=olp_merch_return_9/175-0430757-3801038?ie=UTF8&amp;asin=0393934241&amp;seller=A1W2IX7T37FAMZ&amp;sshmPath=returns#aag_returns">return policy</a>. </div>

No veo cuál es el problema con la línea de código de "ubicación", o por qué no está extrayendo los datos que quiero.

EDITAR: Lo descubrí, pero no sé por qué. Si cambio el comando de impresión para imprimir location.find (text = True) produce la ubicación que deseo. Espero que esto ayude a alguien, algún día.