@Panda_Code
Сognizer

Как изъять информацию из одинаковых тегов?

Здравствуйте.
Пишу парсер на Python и столкнулся с такой проблемой: мне нужно вытащить 2 значения, "Размещено" и "Окончание подачи заявок". Вся суть в том, что они имеют одинаковый тег и я вытаскиваю только первое значение, "Размещено".
5f8dc3d59b613962034134.jpeg
Вот сам код:
def scraper():
    found = []
    # next_page = 0
    url = f"https://zakupki.gov.ru/epz/order/extendedsearch/results.html?searchString=%D0%BF%D1%81%D0%B8%D1%85%D0" \
          f"%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5+%D0%BE%D0%B1%D1%81%D0%BB%D0%B5%D0%B4" \
          f"%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&morphology=on&search-filter=%D0%94%D0%B0%D1%82%D0%B5+%D1%80%D0" \
          f"%B0%D0%B7%D0%BC%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D1%8F&pageNumber=1&sortDirection=false&recordsPerPage" \
          f"=_10&showLotsInfoHidden=false&sortBy=UPDATE_DATE&fz44=on&fz223=on&af=on&ca=on&pc=on&pa=on" \
          f"&currencyIdGeneral=-1&publishDateFrom=01.01.2018&OrderPlacementSmallBusinessSubject=on" \
          f"&OrderPlacementRnpData=on&OrderPlacementExecutionRequirement=on&orderPlacement94_0=0" \
          f"&orderPlacement94_1=0&orderPlacement94_2=0 "
    user = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 '
                          'Safari/537.36'}
    response = requests.get(url, headers=user)  # get response
    soup = BeautifulSoup(response.content, 'html.parser')
    items = soup.find_all('div', class_="search-registry-entry-block box-shadow-search-input")

    for elem in items:
        # pp(elem)
        found.append({
            "No.":
                elem.find('div', class_='registry-entry__header-mid__number').get_text(strip=True),
            "Объект закупки":
                elem.find('div', class_='registry-entry__body-value').get_text(strip=True),
            "Заказчик":
                elem.find('div', class_='registry-entry__body-href').get_text(strip=True),
            "Статус":
                elem.find('div', class_='registry-entry__header-mid__title').get_text(strip=True),
            "Размещено":
                elem.find('div', class_='data-block__value').get_text(strip=True),
            "Окончание подачи заявок":
                elem.find('div', string="Окончание подачи заявок"),
            "Начальная цена": elem.find('div', class_='price-block__value'),

        })
    pp(found)


scraper()

И еще момент, скажите как нормально изъять сумму из тега? У меня получается, вот что - '1\xa0289\xa0440,00 ₽\n
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
SoreMix
@SoreMix
yellow
Можно найти все блоки с классом data-block__value, их будет 3.
Первый - размещено, второй - обновлено, третий (при наличии) - окончание.

values = elem.find_all('div', class_='data-block__value')
{"Размещено": values[2].get_text(strip=True) if len(values) > 2 else '-'}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 80 000 до 200 000 ₽
от 2 500 до 4 000 $
AIR Production Москва
от 170 000 до 200 000 ₽
05 дек. 2020, в 08:07
15000 руб./за проект
05 дек. 2020, в 03:51
11000 руб./за проект
05 дек. 2020, в 02:29
1000 руб./за проект