Ich arbeite für Drakue 10, ohne es zu tun. Drakue 10 verfügt über einen Mechanismus, der als Traveller-Basar bezeichnet wird und es Benutzern ermöglicht, Gegenstände zu kaufen und zu verkaufen. Also schrieb ich einen einfachen Code, um die Preisinformationen des Traveller Bazaar vom Adventurer's Square zu erhalten und in die Excel-Tabelle einzufügen.
Windows10 Pro
Python 3.8.2
selenium 3.141.0
ChromeDriver 81.0.4044.69
openpyxl 3.0.3
config.py
USERID = 'Benutzeridentifikation'
PASSWORD = 'Passwort'
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 zum Speichern von Listeninformationen
exhibition_data = []
options = webdriver.ChromeOptions()
#Headless-Modus
#options.add_argument('--headless')
#Geben Sie den Webdriver-Pfad an
driver = webdriver.Chrome(executable_path="chromedriver.exe", chrome_options=options)
#Ziel-URL suchen
driver.get('https://hiroba.dqx.jp/sc/search/')
time.sleep(3)
#Eingabe des Suchfensters
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)
#Klicken Sie auf die Schaltfläche Anmelden
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()
#Suche
time.sleep(2)
while True:
print("Bitte geben Sie den Artikelnamen ein, nach dem gesucht werden soll:")
#Speichert den zu suchenden Objektnamen
search_word = input()
#Beenden, wenn nichts eingegeben wird
if search_word == "":
print("Beenden Sie das Programm")
break
#Füllen Sie das Suchformular aus
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)
#Erfassung von Listungsdaten
elements = driver.find_elements_by_tag_name('tr')
#In Liste speichern
for elem in elements:
exhibition_data.append(elem.text.split())
#Die ersten 5 nutzlosen Elemente wurden entfernt
del exhibition_data[:6]
workbook = openpyxl.Workbook()
sheet = workbook.active
#Ausgabe in Excel-Tabelle
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]
#Setzen Sie den Inhalt der Liste einmal zurück
del exhibition_data[:]
#Excel-Datei speichern
workbook.save(search_word + "_" + datetime.datetime.now().strftime("%Y%m%d%H%M") + '.xlsx')
#Arbeitsmappe schließen
workbook.close()
#Schließen Sie den Treiber
driver.quit()
Da es sich um einen einfachen Code handelt, wird nur die erste Seite des Ergebnisses angezeigt, und es gibt keine Fehlerbehandlung. Daher möchte ich ihn bei der Verwendung hinzufügen.