Как использовать soup.select и что я делаю не так? - PullRequest
0 голосов
/ 01 мая 2020

Я хочу, чтобы моя программа определяла цену продукта на Amazon. Я пытаюсь сделать это с soup.select и не удается (пока не справился с soup.find). При щелчке правой кнопкой мыши по цене товара отображается код html:

<span id="price_inside_buybox" class="a-size-medium a-color-price">
    ILS&nbsp;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")) 

РЕДАКТИРОВАТЬ: мой вывод пустой список или нет

Ответы [ 2 ]

1 голос
/ 01 мая 2020

Это было бы намного лучше и чище, потому что если amazon изменит свою html по какой-либо причине, ваш скрипт больше не будет работать, чтобы использовать amazon api.

https://docs.aws.amazon.com/AWSECommerceService/latest/DG/Welcome.html

0 голосов
/ 01 мая 2020

Вам нужно добавить user_agent и изменить свой парсер на lxml. Если у вас нет 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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...