удаление сайта электронной коммерции с python - PullRequest
0 голосов
/ 09 января 2020

Я создаю бота для телеграмм, когда вы отправляете ссылку на любой продукт (из myntra, amazon, flipkart). когда его цена падает, он отправляет пользователю сообщение, так что это мой код для извлечения цены из флипкарта и myntra

import requests
from bs4 import BeautifulSoup


URL = 'https://www.myntra.com/sports-sandals/roadster/roadster-men-charcoal-grey-sports- 
sandals/9024251/buy'

head = {"user_agents":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like 
  Gecko) Chrome/79.0.3945.88 Safari/537.36'}

page = requests.get(URL, headers=head)

soup = BeautifulSoup(page.content, "html.parser")

name = str(BeautifulSoup(page.content, 'html.parser')).split(".")
test_name = BeautifulSoup(page.content, 'html.parser').get_text()

if "flixcart" in name:
    title = soup.find(class_={"_35KyD6"}).get_text()
    price = soup.find(class_={"_1vC4OE _3qQ9m1"}).get_text()
    print(title)
    print(price)

if "myntra" in name:
    price = soup.find(class_={"pdp-price"})
    name = soup.find(class_={"pdp-name"})
    #title = soup.find("div class=\"pdp-price-info\"")
    print(price)

здесь код может извлекать цену и имя из флипкарта, но для myntra in ' цена 'и' имя 'не показывает ни одного типа. Я хочу получить имя, выделенное на изображении

I want to get the name as highlighted in image

1 Ответ

2 голосов
/ 11 января 2020

Данные вашей страницы заполнены динамически, используя Javascript из JSON. Но JSON не загружается через XHR. Вы можете найти JSON в HTML и вы можете извлечь JSON с помощью Regex и преобразовать JSON в Dictionary.

import re
import json
import requests

url = 'https://www.myntra.com/sports-sandals/roadster/roadster-men-charcoal-grey-sports-sandals/9024251/buy'
headers = {"user_agents":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'}

response = requests.get(url, headers=headers)

match = re.findall(r"<script>window.__myx = (.+?)</script>", response.text)

json_data = json.loads(match[0])

product_name = json_data['pdpData']['name']
mrp = json_data['pdpData']['price']['mrp']
selling_price = json_data['pdpData']['price']['discounted']

print('ProductName:', product_name)
print('MRP:', mrp)
print('SellingPrice:', selling_price)

Вывод:

ProductName: Roadster Men Charcoal Grey Sports Sandals
MRP: 1399
SellingPrice: 699
...