Je travaille pour Drakue 10 en m'abstenant de le faire. Drakue 10 dispose d'un mécanisme appelé bazar des voyageurs, qui permet aux utilisateurs d'acheter et de vendre des articles. J'ai donc écrit un code simple pour obtenir les informations sur les prix du Traveler Bazaar à partir de Adventurer's Square et les coller sur la feuille Excel.
Windows10 Pro
Python 3.8.2
selenium 3.141.0
ChromeDriver 81.0.4044.69
openpyxl 3.0.3
config.py
USERID = 'Identifiant d'utilisateur'
PASSWORD = 'mot de passe'
bazaar.py
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import re
import config
import openpyxl
import datetime
#Liste à stocker les informations
exhibition_data = []
options = webdriver.ChromeOptions()
#Mode sans tête
#options.add_argument('--headless')
#Spécifiez le chemin du pilote Web
driver = webdriver.Chrome(executable_path="chromedriver.exe", chrome_options=options)
#Rechercher une URL de destination
driver.get('https://hiroba.dqx.jp/sc/search/')
time.sleep(3)
#Entrée de la fenêtre de recherche
s = driver.find_elements_by_xpath('//*[@id="sqexid"]')
s[0].send_keys(config.USERID)
s = driver.find_elements_by_xpath('//*[@id="password"]')
s[0].send_keys(config.PASSWORD)
#Cliquez sur le bouton de connexion
driver.find_element_by_xpath('//*[@id="login-button"]').click()
driver.find_element_by_xpath('//*[@id="welcome_box"]/div[2]/a').click()
driver.find_element_by_xpath('//*[@id="contentArea"]/div/div[2]/form/table/tbody/tr[2]/td[3]/a').click()
#Chercher
time.sleep(2)
while True:
print("Veuillez saisir le nom de l'article à rechercher:")
#Stocke le nom de l'élément à rechercher
search_word = input()
#Quitter si rien n'est entré
if search_word == "":
print("Quitter le programme")
break
#Remplissez le formulaire de recherche
s = driver.find_elements_by_xpath('//*[@id="searchword"]')
s[0].send_keys(search_word)
driver.find_element_by_xpath('//*[@id="searchBoxArea"]/form/p[2]/input').click()
driver.find_element_by_xpath('//*[@id="contentArea"]/div/div[4]/table/tbody/tr/th/table/tbody/tr/td[3]/a').click()
time.sleep(3)
driver.find_element_by_xpath('//*[@id="btn_lock"]/a').click()
time.sleep(5)
#Acquisition des données d'inscription
elements = driver.find_elements_by_tag_name('tr')
#Stocker dans la liste
for elem in elements:
exhibition_data.append(elem.text.split())
#Suppression des 5 premiers éléments inutiles
del exhibition_data[:6]
workbook = openpyxl.Workbook()
sheet = workbook.active
#Sortie vers une feuille Excel
for i in range(len(exhibition_data)):
for j in range(len(exhibition_data[i])):
sheet.cell(row=i + 1, column=j + 1).value = exhibition_data[i][j]
#Réinitialiser le contenu de la liste une fois
del exhibition_data[:]
#Enregistrer le fichier Excel
workbook.save(search_word + "_" + datetime.datetime.now().strftime("%Y%m%d%H%M") + '.xlsx')
#Fermer le classeur
workbook.close()
#Fermer le pilote
driver.quit()
Comme il s'agit d'un code simple, il est conçu pour n'obtenir que la première page du résultat et il n'y a pas de gestion des erreurs, je voudrais donc l'ajouter lors de son utilisation.