@moneymakerXA

Как спарсить размер с сайта?

Есть сайт usa.tommy.com паршу его при помощи bs4 + requests. Поле с размерами по дефолту available, спустя некоторое время с сервера приходит ответ с доступными размерами и поле меняется на disabled. Вручную перелопатил все теоретически подходящие ответы, json с размерами нигде не нашел.

Какой запрос нужно послать на сервер, чтобы получить нужный ответ?
Буду благодарен любому совету

def get_html(self, url, payload=None):
        while True:
            try:
                proxies = {'http': self.current_proxy, 'https': self.current_proxy}
                if not self.use_proxy:
                    proxies = {}
                #time.sleep(random.randint(random.randint(6, 10), random.randint(12, 27)))
                html = self.s.get(url, headers=self.HEADERS, proxies=proxies, params=payload, timeout=30, cookies=self.cookies)
                if html.status_code == 200:
                    print(html.status_code)
                    if self.request_limit and self.request_limit == self.request_counter:
                        self.proxy.put(self.current_proxy)
                        self.get_cookies()
                        self.request_counter = 0
                    self.request_counter += 1                     
                    return html
                elif html.status_code == 403:
                    print(html.status_code)
                    self.proxy.put(self.current_proxy)
                    self.get_cookies()
                    #time.sleep(random.randint(600,800))
                else:
                    #time.sleep(random.randint(14, 27))
                    print(html.status_code)
                    continue
            except:
                if self.free_proxy:
                    self.current_proxy = self.proxy.get()
                continue

Результат этой функции - html (ниже супом его паршу)

soup = BeautifulSoup(html.text, 'html.parser')

block_size = soup.find('ul', id='sizes').find_all('li')
        for li in block_size:
            if li['class'] == ['available']:
                print(li)
                size_list.append(li.find('span').text)
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
hottabxp
@hottabxp
Эксперт по BeautifulSoup(но это не точно!)
Попробуйте так:
soup = BeautifulSoup(response.text,"lxml")
		ul = soup.find('ul',id = 'sizes')
		sizes = ul.find_all('li')
		for size in sizes:
			print(size.text.strip())

Только что попробовал, печатает размеры. Пробовал куртки, в которых размеры и римскими цифрами и нашими. Работает одинаково.
PS: Пробовал на куртках (детских и женских).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы