Очистка eBay (BeautifulSoup/selenium) — укажите дату и купите сейчас/лучшее предложение не печатается в файле .csvJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Очистка eBay (BeautifulSoup/selenium) — укажите дату и купите сейчас/лучшее предложение не печатается в файле .csv

Сообщение Anonymous »


Я работаю над парсингом данных с eBay с помощью BeautifulSoup и Selenium. Я новичок в парсинге, но у меня довольно хороший старт. Код указан здесь:

из импорта bs4 BeautifulSoup из веб-драйвера импорта селена из selenium.webdriver.common.by импортировать из selenium.webdriver.support.ui импортировать WebDriverWait из selenium.webdriver.support импортируйте ожидаемые_условия как EC из selenium.common.Exceptions импортировать NoSuchElementException импортировать панд как pd время импорта # Настройте Chrome WebDriver driver = webdriver.Chrome(executable_path="___") # Замените на путь к вашему chromedriver # URL-адрес eBay url = "https://www.ebay.com/sch/i.html?_from=R ... Complete=1" # Откройте страницу eBay driver.get(url) # Подождем, пока загрузится контент ожидание = WebDriverWait (драйвер, 10) wait.until(EC.presence_of_element_located((By.CLASS_NAME, "s-item__info"))) данные = [] предыдущая_страница_номер = 0 пока правда: # Получите исходный код страницы после ожидания динамического контента page_source = driver.page_source суп = BeautifulSoup(page_source, 'lxml') print(f"Извлечение страницы: {driver.current_url}") для продукта в супе.select(".s-item"): title = product.select_one(".s-item__title span").text.strip() цена = product.select_one(".s-item__price").text.strip() # Проверьте дату продажи в блоке тегов tag_block = product.select_one(".s-item__title--tagblock") если тег_блок: old_date_element = tag_block.select_one("span.POSITIVE") проданная_дата = проданная_дата_элемент.текст.полоса() если проданная_дата_элемент еще Нет еще: проданная_дата = Нет # Дополнительная информация bids_element = product.select_one(".s-item__bids") num_bids = bids_element.text.strip(), если bids_element иначе Нет # Проверьте «Купить сейчас» buy_it_now_element = product.select_one(".s-item__purchase-options") buy_it_now = "Да", если buy_it_now_element и "Купить сейчас" в buy_it_now_element.text, иначе "Нет" # Проверьте «Лучшее предложение» best_offer_element = product.select_one(".s-item__best-offer") best_offer = "Да", если best_offer_element и "Лучшее предложение" в best_offer_element.text, иначе "Нет" data.append({ «титул»: заголовок, «цена»: цена, "sold_date": проданная_дата, "num_bids": num_bids, "buy_it_now": buy_it_now, "best_offer": лучшее_предложение }) пытаться: # Нажмите кнопку следующей страницы driver.find_element(By.CLASS_NAME, 'pagination__next').click() # Подождем, пока загрузится новая страница time.sleep(3) # Отрегулируйте продолжительность сна по мере необходимости # Извлечь номер текущей страницы current_page_number = int(driver.current_url.split("_pgn=")[1].split("&")[0]) # Разрыв, если номер страницы не меняется если номер текущей_страницы == номер_предыдущей_страницы: перерыв номер предыдущей_страницы = номер текущей_страницы кроме NoSuchElementException: # Прервать, если кнопка следующей страницы не найдена перерыв # Сохранить в CSV pd.DataFrame(data=data).to_csv("ebay_products_selenium.csv", index=False) # Закрываем веб-драйвер драйвер.выйти() Код не печатает дату продажи товара, которая находится в следующем HTML-коде, который находится в диапазоне class="POSITIVE" Продано 8 октября 2023 г. (извините за плохое форматирование), и указано принятое лучшее предложение. в
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»