Я хочу, чтобы моя программа определяла цену продукта на Amazon. Я пытаюсь сделать это с soup.select и не удается (пока не справился с soup.find). При щелчке правой кнопкой мыши по цене товара отображается код html:
soup.select
soup.find
<span id="price_inside_buybox" class="a-size-medium a-color-price"> ILS 53.35 </span>
Это мой код, что я делаю неправильно и как мне правильно использовать soup.select?
import bs4, requests, amazonlink = "https://www.amazon.com/UNSCENTED-PURITO-Ingredients-sunscreen-Lightweight/dp/B07WQXP3D8/ref=as_li_ss_tl?crid=V29993T4TI1W&dchild=1&keywords=purito+comfy+water+sunblock&qid=1585239706&sprefix=purito+comfy,aps,299&sr=8-2&linkCode=sl1&tag=drdrayzday-20&linkId=7231993512a225ded0b474b852d105bc&language=en_US" res = requests.get(amazonlink) soup = bs4.BeautifulSoup(res.text,'html.parser') #creates soup object print(soup.select("price_inside_buybox")) print(soup.find("span",id="price_inside_buybox"))
РЕДАКТИРОВАТЬ: мой вывод пустой список или нет
Это было бы намного лучше и чище, потому что если amazon изменит свою html по какой-либо причине, ваш скрипт больше не будет работать, чтобы использовать amazon api.
https://docs.aws.amazon.com/AWSECommerceService/latest/DG/Welcome.html
Вам нужно добавить user_agent и изменить свой парсер на lxml. Если у вас нет lxml парсера, вам нужно установить его, используя
user_agent
lxml
pip install l xml
Код :
import bs4, requests amazonlink = "https://www.amazon.com/UNSCENTED-PURITO-Ingredients-sunscreen-Lightweight/dp/B07WQXP3D8/ref=as_li_ss_tl?crid=V29993T4TI1W&dchild=1&keywords=purito+comfy+water+sunblock&qid=1585239706&sprefix=purito+comfy,aps,299&sr=8-2&linkCode=sl1&tag=drdrayzday-20&linkId=7231993512a225ded0b474b852d105bc&language=en_US" headers = {'User-Agent':'Mozilla/5.0'} res = requests.get(amazonlink,headers=headers) soup = bs4.BeautifulSoup(res.text,'lxml') print(soup.select_one("#price_inside_buybox").text.strip())