Je suis en train de gratter Amazon et essayait d'obtenir le prix d'un article dans une page, le fait est pas tous les éléments dans une page Amazon ont un prix si parfois, il peut se révéler qu'elle équivaut à AucunDonner de la valeur par défaut si .Find est égal à aucun Python 3
import requests
from bs4 import BeautifulSoup
import itertools
def spider(max_pages):
search = str(input("Search whatever you want and I'll find it on Amazon "))
print("\n")
page = 1
while page <= max_pages:
url = "https://www.amazon.it/s/ref=sr_pg_"+ str(page) + "?rh=n%3A425916031%2Ck%3A" + search + "&page="+ str(page) + "&sort=relevancerank&keywords=" + search
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, "html.parser")
for link in soup.findAll("a", {"class": "s-access-detail-page"}):
href = link.get("href")
title = link.string
print(title)
print(single_Data(href))
print(href)
page += 1
def single_Data(item_url):
source_code = requests.get(item_url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, "html.parser")
priceog= (soup.find("span", {"id": "priceblock_ourprice"}))
price_in = priceog.string
return price_in
spider(1)
a la fin de l'erreur
AttributeError: 'NoneType' object has no attribute 'string'
J'ai aussi utilisé pour exécuter le prix de single_Data avec une boucle comme celui-ci
def single_Data(item_url):
source_code = requests.get(item_url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, "html.parser")
for item_price in soup.findAll("a", {"class": "a-link-normal"}):
price_in= item_price.string
return price_in
Alors, comment puis-je mettre que si elle ne trouve pas
("span", {"id": "priceblock_ourprice"})
il ne faut pas donner une erreur ou écrire « Aucun », mais plutôt donner la variable price_in la valeur de chaîne Je veux que: "Il n'y a actuellement aucun prix pour cet article".
Merci xx
Merci! Je continuais à écrire « Aucun » ahah, apprécier xx –