Реализуйте автоматический вход в систему для пользователей JD, автоматически ищите и сканируйте цены на продукты.
Реализуйте автоматический вход в систему для пользователей JD, автоматически ищите и сканируйте цены на продукты.

Предисловие

Double Eleven уже здесь. Как найти информацию о ценах на нужные вам товары на платформе и добиться быстрого сравнения цен? Для этого используются полученные нами знания сканеров. Эта статья в основном посвящена получению цен на продукты JD. Код, использованный в статье, используется только для обучения и демонстрации функций сканера.

веб-анализ

Обычно мы вводим продукт, который хотим найти, на домашней странице JD и нажимаем «Поиск», чтобы отобразить список и информацию о цене искомого продукта.

Как показано выше,Мы можем видеть в URL,будет одинpvidПараметры,Это должно произойти при инициировании поискового запроса.,js генерируется путем шифрования файла cookie пользователя и других параметров. Если мы вставим этот URL в другой браузер,Вы обнаружите, что цена на самом деле зашифрована.

так,этотpvidВсе еще распознавать браузер。для Сдавайсярептилия在访问时能够模拟этотjsзапросить действие,Первое, что нужно решить, это проблема с pvid,Также существует проблема со входом в систему. Если сипользоватькод все реализовано,будет очень хлопотно,Я просто случайно написал последнюю статьюseleniumЗамечательное использование селена в сканерах и автоматизированном тестировании,Давайте воспользуемся возможностью попрактиковаться здесь.

разработка кода

Первый — установить селен, а затем загрузить драйвер Chrome в код. Поскольку Chrome уже установлен на моем ноутбуке, я могу использовать его напрямую. В противном случае мне нужно загрузить и установить драйвер.

Функция кода в основном разделена на три части:

  1. Введите поиск по контенту на домашней странице JD
  2. Осуществить вход
  3. Сканировать информацию о ценах на товары

Затем используйте селен для реализации трех вышеуказанных функций.

1. Реализуйте поиск

использоватьwebdriver.ChromeЗагрузите и начнитеchrome。

Язык кода:python
кодКоличество запусков:0
копировать
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36',
}

# Установить заголовок запроса
chrome_options.add_argument(f"user-agent={headers['User-Agent']}")

# Запустить браузер
driver = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)

Информация заголовка запроса добавляется сюда с помощью параметров. Вы также не можете добавить ее сюда, потому что selenium — это запускаемый браузер, и вся эта информация UA доступна. Следующим шагом является реализация ввода содержимого поля поиска.

Язык кода:python
кодКоличество запусков:0
копировать
# Открыть домашнюю страницу JD
driver.get("https://www.jd.com/")
time.sleep(2)
# Найдите поле поиска и введите ключевые слова
search_box = driver.find_element(By.ID, "key")  # окно поиска ID для 'key'
# Очистить содержимое по умолчанию
search_box.clear() 
search_box.send_keys("ноутбук")

# Нажмите клавишу Enter, чтобы выполнить поиск
search_box.send_keys(Keys.RETURN)

# Подождите, пока загрузятся результаты поиска
time.sleep(3)

в селене,проходитьfind_elementнайти элемент,Идентификатор элемента можно узнать с помощью F12.

использоватьsend_keysчтобы ввести текст и нажать Enter,Эффект от запуска программы следующий:

Это реализует функцию поиска на странице.

2. Вход пользователя

После ввода приведенного выше содержимого поиска появляется страница входа пользователя. Она остается такой же, как и раньше. Найдя поле ввода имени пользователя и пароля, введите пароль учетной записи JD, а затем нажмите, чтобы войти.

Язык кода:python
кодКоличество запусков:0
копировать
sername_box = driver.find_element(By.ID, "loginname")
username_box.clear() 
username_box.send_keys("18******")

# Введите пароль
password_box = driver.find_element(By.ID, "nloginpwd")
password_box.clear()
password_box.send_keys("1*****")

# Нажмите кнопку входа
login_button = driver.find_element(By.ID, "loginsubmit")
login_button.click()

Эффект следующий, но после нажатия на вход всплывает скользящий пазл. Это должно уметь скользить какими-то техническими средствами, но здесь я реализовал это вручную.

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

Язык кода:python
кодКоличество запусков:0
копировать
driver.get("https://passport.jd.com/new/login.aspx")
username_box = driver.find_element(By.ID, "loginname")
username_box.clear()
username_box.send_keys("18354141658")

password_box = driver.find_element(By.ID, "nloginpwd")
password_box.clear()
password_box.send_keys("1qaz@WSX")

login_button = driver.find_element(By.ID, "loginsubmit")
login_button.click()
time.sleep(20)

В конце вам придется поспать. Здесь 20 секунд — это время, которое осталось для перемещения ползунка или ввода кода подтверждения мобильного телефона. После входа в систему это обычное окно браузера. Вы можете выполнять такие операции, как повторный поиск и просмотр цены в коде перед закрытием.

3. Получите информацию о продукте

После входа на страницу вы можете проанализировать структуру веб-страницы с ценами на продукты и получить цену путем позиционирования элементов.

Вы можете использовать отладку по точкам останова для анализа данных веб-страницы. На одной странице содержится 30 продуктов, поэтому анализируется 30 данных о ценах.

Магазины также могут быть проанализированы. Один продукт соответствует одному магазину, всего 30 сведений о магазине.

Затем проанализируйте информацию об описании продукта, поскольку часть ее содержимого находится под тегом em, а часть — под тегом шрифта.

Поэтому, если вы используете описанный выше метод анализа, будет более 30 строк данных и много новых строк.

Итак, идея этой части состоит в том, чтобы сначала проанализировать тег a, чтобы было 30 сведений о продукте.

Затем пройдите по тегу a, объедините весь текст ниже и удалите символы новой строки.

Таким образом получается информация о цене, магазине и описании продукта. Код выглядит следующим образом:

Язык кода:python
кодКоличество запусков:0
копировать
page_source = driver.page_source
# использовать Scrapy Selector Извлечь цену
selector = Selector(text=page_source)

prices = selector.css('div.p-price strong i::text').extract()  
shops = selector.css('div.p-shop span a::text').extract()
infos = selector.css('div.p-name a')
infos_ = []
for info in infos:
    infos_.append(''.join(info.css('em ::text').extract()))

for price, shop, info in zip(prices, shops, infos_):
    print(price, shop, info)

Запустите код и выведите результат:

Заключение

Вот как можно получить цену на продукты JD с использованием селена. Также можно видеть, что селен может вводить текст и имитировать клики пользователя, что очень удобно для входа в систему. Процедура может использовать селен для перелистывания страниц и получения дополнительной информации о продукте.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose