Моя цель — разобрать страницу предложения «funpay.com». Это должно быть легко, потому что все имена предложений находятся внутри одного класса 'tc-item'.

Однако я не могу использовать запросы bs4+, потому что эта страница загружается только в том случае, если вы вошли в систему, что я делаю с помощью файлов cookie (selenium+pickle).

Не знаю, как это сделать вообще, поэтому буду признателен за любые подсказки.

Код, который я пробовал:

driver.get("https://funpay.com/orders/trade")
soup = bs(driver.page_source, 'html.parser')

try:

    paid = soup.find_all('a', class_='tc-item')
    for sold in paid:
        title = sold.find('div', class_='tc-order') # inside 'a', 
                                                    # prints the code of offer
        print(title)

except Exception as ex:
    print(ex)
0
wasdy 25 Ноя 2022 в 21:28
В чем именно проблема, есть ли ошибка (трассировка всего стека) или чего-то не хватает? Также было бы здорово предоставить пример HTML, если нет возможности войти в систему. Спасибо
 – 
HedgeHog
25 Ноя 2022 в 21:47

1 ответ

Основываясь на довольно тонкой отправной точке, я подозреваю, что это ошибка, возникающая во время итераций, поэтому вот что я бы сделал.

Чтобы не отбрасывать все сразу, проверяйте внутри цикла, доступен ли искомый элемент или нет, и давайте выводить результат соответственно.

...
soup = bs(driver.page_source, 'html.parser')
paid = soup.find_all('a', class_='tc-item')

for sold in paid:
    title = sold.find('div', class_='tc-order').text if sold.find('div', class_='tc-order') else 'no element found'
    print(title)
0
HedgeHog 25 Ноя 2022 в 21:55