[PYTHON] Drakue 10 Bazaar Market Acquisition Program In 20 Minuten erstellt

Einführung

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.

Umgebung

Windows10 Pro

Python 3.8.2

selenium 3.141.0

ChromeDriver 81.0.4044.69

openpyxl 3.0.3

Code

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()

Aufgabe

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.

Recommended Posts

Drakue 10 Bazaar Market Acquisition Program In 20 Minuten erstellt
CSS-Umgebung in 10 Minuten mit Django erstellt