前提・実現したいこと
pixivの検索結果にブクマ数が表示されなくなったため、リンク先の作品ページなどからブクマ数を取得して検索結果に表示するGreasemonkey用のユーザースクリプトを自作しています。
初挑戦のため、完全に自分用として、既存のスクリプトを改造するかたちで進めていますが、$.ajaxで取得したHTMLからブクマ数を参照することができずにいます。
発生している問題・エラーメッセージ
undefinedや[object object]が表示される。
該当のソースコード
javaScript
1 2 3function addSize(illusts, stop) { 4 if (illusts.length > 0) { 5 $.each(illusts, function (i, a) { 6 $.ajax({ 7 url: a, 8 type: 'GET', 9 dataType: 'html', 10 async: false, 11 success: function (BMhtml) { 12 var bm = $(BMhtml).find('.sc-LzMXg gYkuYy'); 13 $('<div class="size" style="color:#cccccc;">').html(bm).appendTo(a); 14 a.classList.add('addsize'); 15 } 16 }); 17 }); 18
既存のスクリプトを流用し、検索結果からイラストページへのリンク(https://www.pixiv.net/artworks/~)をillustsとして取得しています。
console.logで見た感じ、リンク先イラストページのHTMLは取得できてるようですが、そこから先、ブクマ数のある要素を取得できません。
*追記*
console.log(BMhtml)の結果はこちらです。
(ID等は○で伏せています)
検索結果ページから取得した約60件分あります。
JSONに近い感じ?ではありますが、bookmarkCountのデータはあるよです。
.findでブックマーク数が記載されているclass名を検索したconsole.log(bm)の結果は、Object { length: 0, prevObject: Object[56], context: undefined, selector: ".sc-LzMXg gYkuYy" }
で、検索画面にもブクマ数ではなく[object Object]が表示されます。
<!DOCTYPE html> <html lang="ja"xmlns:wb="http://open.weibo.com/wb"><head><meta name="viewport" content="width=1366"><link rel="shortcut icon" type="image/vnd.microsoft.icon" href="https://www.pixiv.net/favicon.ico"><title>#ファンタジー ○○○○○○○○○○○○○○○○○○ - ○○○○○○○のイラスト - pixiv</title><link rel="canonical" href="https://www.pixiv.net/artworks/○○○○○○○○"><link rel="alternate" hreflang="ja" href="https://www.pixiv.net/artworks/○○○○○○○○"><link rel="alternate" hreflang="en" href="https://www.pixiv.net/en/artworks/○○○○○○○○"><meta property="twitter:card" content="summary_large_image"><meta property="twitter:site" content="@pixiv"><meta property="twitter:url" content="https://www.pixiv.net/artworks/○○○○○○○○?ref=twitter_photo_card"><meta property="twitter:title" content="○○○○○○○○○○○○○○○○○○"><meta property="twitter:description" content="○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○"><meta [...] 略 "likeData":false,"width":1103,"height":1729,"pageCount":1,"bookmarkCount":10,"likeCount":11,"commentCount":0,"responseCount":0,"viewCount":93,"isHowto":false,"isOriginal":true,"imageResponseOutData":[],"imageResponseData":[],"imageResponseCount":0,"pollData":null,"seriesNavData":null,"descriptionBoothId":null,"descriptionYoutubeId":null,"comicPromotion":null,"fanboxPromotion":null,"contestBanners":[],"isBookmarkable":true,"bookmarkData":null,"contestData":null,"zoneConfig":{"responsive":{"url":"https://pixon.ads-pixiv.net/show?zone_id=illust_responsive&format=js&s=2&up=0&a=29&ng=w&l=ja&uri=%2Fartworks%2F_PARAM_&is_spa=1&K=f4f40d6558a&ab_test_digits_first=50&Yuid=KSVAARA&suid=Pg9z3s9oqqeebz5i&num=5df7c670647&p=2&t=3ze0RLmk59&t=6sZKldb07K&t=DN6RDM1CuJ&t=IfpAckJr8v&t=OT-C6ubi9i&t=jfnUZgnpFl&t=pvU1D1orJa&t=vnKYHqMYrx"},
ブックマークページの場合のconsole.log(BMhtml)結果はこちらです。
イラストページとは違い、実際のページの要素を調査したHTMLそのままに近い感じです。
こちらのconsole.log(bm)結果は
Object { length: 0, prevObject: Object[132], context: undefined, selector: ".bookmark-count _ui-tooltip" }
で[object Object]が表示されます。
<!DOCTYPE html> <html lang="ja" class="" xmlns:wb="http://open.weibo.com/wb"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=970"> <meta name="format-detection" content="telephone=no"> <meta property="og:site_name" content="pixiv"> <meta property="fb:app_id" content="140810032656374"> <meta property="wb:webmaster" content="4fd391fccdb49500" /> <meta property="twitter:card" content="summary_large_image"> <meta property="twitter:site" content="@pixiv"> <meta property="twitter:title" content="イラストコミュニケーションサービス [pixiv]"> <meta property="twitter:description" content="pixiv(ピクシブ)は、作品の投稿・閲覧が楽しめる「イラストコミュニケーションサービス」です。幅広いジャンルの作品が投稿され、ユーザー発の企画やメーカー公認のコンテストが開催されています。"> <meta property="twitter:image" content="https://s.pximg.net/www/images/pixiv_logo.gif?2"> <meta property="og:image" content="https://s.pximg.net/www/images/pixiv_logo.gif?20130523"> <meta property="og:description" content=[...] 略 <div class="layout-body"><section class="_unit bookmark-detail-unit"><div class="thumbnail-container"><a href="/member_illust.php?mode=medium&illust_id=○○○○○○○○" class="work _work "><div class="_layout-thumbnail"><img src="https://i.pximg.net/c/150x150/img-master/img/2019/12/16/02/11/56/○○○○○○○○_p0_master1200.jpg" alt=""></div></a></div><div class="bookmark-container"><ul class="count-list"><li><a href="/bookmark_detail.php?illust_id=○○○○○○○○" class="bookmark-count _ui-tooltip" data-tooltip="10件のブックマーク"><i class="_icon _bookmark-icon-inline"></i>10</a></li></ul><a href="/bookmark_add.php?type=illust&illust_id=○○○○○○○○" class="_button">ブックマークに追加</a>
試したこと
JSONにしてみる、.findを.filterにしてみる、イラストページではなくブックマークページ(https://www.pixiv.net/bookmark_detail.php?illust_id=~)のHTMLを取得してみるなど・・・
初心者のため試せることが少ないです・・・
補足情報(FW/ツールのバージョンなど)
改造元はこちらになります。
https://greasyfork.org/ja/scripts/392352-pixiv-%E8%A7%A3%E5%83%8F%E5%BA%A6%E8%BF%BD%E5%8A%A0
回答1件
あなたの回答
tips
プレビュー