値段の比較はお手の物
スクリプトだけ貼っておく、デバッグ出力も残してあるので動かすとよくわかるかも
puppeteerを利用
Rust脳でreturn忘れたり型付けたりして無限にバグった
code:solve.js
const puppeteer = require('puppeteer')
async function answer(page) {
page.on('console', consoleObj => console.log(consoleObj.text()));
const evalClosure = () => {
let cond = document.getElementById("message").innerHTML.trim()
console.log(cond)
let rank, findCheap
if (cond.includes('最高"値の商品名を入力してね')) {
rank = 0
findCheap = false
} else if (cond.includes('最安"値の商品名を入力してね')) {
rank = 0
findCheap = true
} else {
const regex = /^(\d{1,2}?)番目に(.)い商品名を入力してね/
const matches = regex.exec(cond)
console.log("******")
console.log("******")
rank = parseInt(matches1) - 1 findCheap = matches2 == "安" }
console.log(rank)
console.log(findCheap)
let products = []
for (let el of els) {
let product = {}
product.price = parseInt(el.querySelector("divname='price'").innerHTML.substr(3), 10) product.item = el.querySelector("divname='item'").textContent.substr(4) products.push(product)
}
products = products.sort((a,b) => {
if (findCheap) {
return a.price - b.price
} else {
return b.price - a.price
}
})
for (let prod of products) {
console.log(${prod.price}: ${prod.item})
}
console.log("----Result------")
console.log(${res.price}: ${res.item})
console.log("----------")
let inputEl = document.getElementById("name")
inputEl.value = res.item
let formEl = document.getElementsByClassName("form-inline")0 formEl.submit()
}
while(1) {
await Promise.all([
page.waitForNavigation(),
page.evaluate(evalClosure)
])
}
}
(async () => {
const browser = await puppeteer.launch({
})
let page = await browser.newPage()
await answer(page)
})()