Форум сайта python.su
Не могу решить проблему. Как спарсить текст из класса «add-discount-text-price j-final-saving tooltipstered» Если я правильно понимаю, то это не статические данные, как бы Вы действовали в данном случае? При выполнении нижеуказанного кода отрабатывает только except:
Пробовал менять User-Agent на мобильный, но ответ тот-же. В средствах разработки Firefox не смог найти нужный запрос для парсинга (цена обновляется не по нажатию, а при загрузке страницы).
Извиняюсь за кривой код, только учусь (замечания приветствуются).
import requests from bs4 import BeautifulSoup import re def get_html(url): user_agent={"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"} r= requests.get(url, headers=user_agent) return r.text def get_data(html): #Получение html и его парсинг soup= BeautifulSoup(html,"lxml") try: price= soup.find("span", class_="add-discount-text-price j-final-saving tooltipstered").text #Ищем блок кода сайта где указана цена и забираем текст price1=re.findall(r"\d",(price)) # Ищем только цифры (получаем список вида [1,3,6]) price2=int("".join(price1).strip()) # Преобразуем список в строку, а затем в целое число except: price= soup.find('div', class_="add-discount-text").find("span", class_="add-discount-text-price j-final-saving").text price1=re.findall(r"\d",(price)) price2=int("".join(price1).strip()) else: price2=("Не удалось определить цену") print (price2) def main(): url = 'https://www.wildberries.ru/catalog/6799402/detail.aspx?targetUrl=GP' get_data(get_html(url)) if __name__ == '__main__': main()
Офлайн
anpyА вот это разве не оно?
В средствах разработки Firefox не смог найти нужный запрос для парсинга
Офлайн
Да, похоже оно.
Спасибо
Офлайн
Пытаюсь создать POST запрос, но видно что то делаю не так (или всё не так).
Получаю ответ 404
import requests import json url="https://www.wildberries.ru/content/cardpromo" payload = { "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0", "Accept": "*/*", "Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "X-RequestVerificationToken": "CfDJ8Hyt7h5QkHpBl_eWRSZ-2nNaORxuC9Wok6viyAtpSSihJmUBKw_4puPE1petl8o6Mt3hSMe11fKwVcbOpn7wH907v4GwnqcUgoaX-aabvm2TTUvc1l-MhJw", "X-Requested-With": "XMLHttpRequest", "Pragma": "no-cache", "Cache-Control": "no-cache", "referrer": "https://www.wildberries.ru/catalog/6799402/detail.aspx?targetUrl=GP", "body": "cod1s=6799402&characteristicId=", "method": "POST", } r= requests.post(url, json=payload) print(r)
Отредактировано anpy (Авг. 15, 2019 17:01:33)
Офлайн
А сами на сайт
https://www.wildberries.ru/content/cardpromo
Офлайн
В средствах разработки Firefox POST запрос на адрес https://www.wildberries.ru/content/cardpromo
ответ 200
Прикреплённый файлы: Снимок экрана.png (123,9 KБ)
Офлайн
вы смешали заголовки и тело запроса.
Офлайн
Я посмотрел скриншот и понял что вы вообще не то делаете. Там нет никакого json. Там данные формы
Офлайн
Что то я совсем потерялся.
Если не json, то почему средства разработки показывают тип json?
Как мне выйти на конкретный запрос, который выдаст ответ аналогичный как указано в средствах разработки? Мне нужно спарсить цену 1169 с этой страницы
Отредактировано anpy (Авг. 12, 2019 18:00:35)
Офлайн
Вы действительно сильно потерялись. Сейчас вы путаете запрос и ответ. На первом скриншоте Вы показали запрос, он действительно пост, но посылается он как Content-type: application/x-www-form-urlencoded, но в приведенном вами коде вы пытаетесь отправить эти данные как JSON.
На втором Вашем скриншоте вы показываете ответ сервера, тип данных которого вполне может отличаться от таковых в запросе.
anpy1) вам надо сформировать нормальный запрос, более правильным путем было бы использовать requests.Session что бы пройти авторизацию и потом уже слать запрос на адрес который надо, правильно указав данные (в вашем случае в коде надо было не json=payload, а просто data=payload и то при условии что вы сми данные сформируете корректно)
Как мне выйти на конкретный запрос, который выдаст ответ аналогичный как указано в средствах разработки? Мне нужно спарсить цену 1169
Офлайн