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&asin=0393934241&seller=A1W2IX7T37FAMZ&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&asin=0393934241&seller=A1W2IX7T37FAMZ&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.