書籍名 作者 出版社 サムネイル 販売ページ等を取得
手順
スクリプト
// init
let xhr = new XMLHttpRequest()
let domain = '<https://books.rakuten.co.jp>'
let deatailUrl = '<https://books.rakuten.co.jp/rk/>'
let items = []
let csvData = ""
let csvHead = 'productId ,isbn, adultType, title, authorName, companyName, imageUrl, detailUrl\\n'
//ptoductID, ISBN, adultContents, タイトル, 作者, 出版社, サムネイル画像, 販売ページ
let sort=5 //タイトル順
//let sort=2 //更新
//let sort=4 //購入順
//let sort=5 //タイトル順
//let sort=7 //著者名
let pp=1;
// function
function getItemsList(pn) {
let url = domain + '/e-book/kobo/library/web-api?kw=&sort=' + sort + '&pn=' + pn + '&pc=100&sync=0&pv=1'
xhr.open('GET', url, false)
xhr.send()
console.log(xhr.responseText)
}
console.log('START')
// request result
xhr.onreadystatechange = function() {
switch ( xhr.readyState ) {
case 0:
console.log('uninitialized')
break
case 1:
console.log('loading...')
break
case 4:
if(xhr.status == 200) {
console.log('200')
let data = xhr.responseText
data = JSON.parse(data)
console.log(data)
if(data.result.items) {
items.push(...data.result.items)
}
if(data.result.meta.endNum == data.result.meta.sumCount) {
break
}
if(data.result.items== null) {
break
}
pp= pp+1
getItemsList(pp)
} else {
console.log('Failed')
}
break
}
}
// action
getItemsList(pp)
// to csv
items.forEach(item => {
// csvData += '"' + item.id + '","' + item.title+ '","' + item.item.authors + '"\\n'
csvData += '"' + item.productId + '","' + item.isbn + '","' + item.adultType + '","' + item.title + '","' + item.contributors + '","' + item.mfrName + '","' + item.imageUrl + '","' + deatailUrl + item.productId + '/"\\n'
})
// console.log(csvData)
window.location = 'data:text/csv;charset=utf8,' + encodeURIComponent(csvHead + csvData)
//window.location = 'data:text/csv;charset=utf8,' + encodeURIComponent(csvData)