ISBN の抽出

ひたすらに XPath で ISBN を抽出する。Amazon の商品ページから東京都内の図書館の蔵書検索を行う Greasemonkey スクリプト - へたっぴ日記をいろんなサイトで表示したくて。

アマゾン

>>> isbn10 = document.evaluate(
      'normalize-space(//li[b/text()="ISBN-10:"]/text())',
      document, null, XPathResult.STRING_TYPE, null).stringValue
"4873113296"
>>> isbn13 = document.evaluate(
      'translate(//li[b/text()="ISBN-13:"]/text(), "- ", "")',
      document, null, XPathResult.STRING_TYPE, null).stringValue
"9784873113296"

オライリー

>>> isbn10 = document.evaluate(
      'translate(//meta[string-length(@content)=13 and @name="isbn"]/@content, "-", "")',
      document, null, XPathResult.STRING_TYPE, null).stringValue
"4873112028"
>>> isbn13 = document.evaluate(
      'translate(//meta[string-length(@content)=17 and @name="isbn"]/@content, "-", "")',
      document, null, XPathResult.STRING_TYPE, null).stringValue
"9784873113142"

ブックオフオンライン

>>> isbn13 = document.evaluate(
      '//tr[th/text()="JAN"]/td/text()',
      document, null, XPathResult.STRING_TYPE, null).stringValue
"9784106101410"

イーブックオフ

>>> isbn10 = document.evaluate(
      'substring(//tr[td/b/text()="ISBN"]/td[3]/text(), 1, 10)',
      document, null, XPathResult.STRING_TYPE, null).stringValue
"404713791X"
>>> isbn13 = document.evaluate(
      'substring(//tr[td/b/text()="ISBN"]/td[3]/text(), 13, 13)',
      document, null, XPathResult.STRING_TYPE, null).stringValue
"9784047137912"

Google ブック検索

>>> isbn10 = document.evaluate(
      'substring-before(substring-after(//a[contains(@href, "ISBN:")]/@href, "ISBN:"), "&")',
      document, null, XPathResult.STRING_TYPE, null).stringValue
"4873110971"
>>> isbn10 = document.evaluate(
      'substring-after(//td/text()[starts-with(., "ISBN ")], "ISBN ")',
      document, null, XPathResult.STRING_TYPE, null).stringValue
"4873110971"

たぶん、つづく。