yoshiislandblog.net
元営業の駆け出しアラサーSEが、休日にMACと戯れた際の殴り書きメモ。日々勉強。日々進歩。

この記事は3年以上前に書かれた記事で内容が古い可能性があります

食べログAPIないのでXPATHを使う

2017-06-11

あれ、食べログってAPI無くないか?ということで習いたてのXPATHを使って食べログの情報を取ってみる。

■xpathの取り方
Safariにて「XPATHをコピー」という便利な項目があるので使う

■コード
コードにペタペタ

% cat taberogu.py
import urllib.request as request
import lxml.html
import random

# pickup restaurant
def get_taberogu(url):
    ran_num = random.randint(1,21)

    with request.urlopen(url) as page:
          html = ''
          for line in page.readlines():
              html += line.decode('utf-8')

          doc = lxml.html.fromstring(html)
          elem = doc.xpath('//*[@id="column-main"]/ul/li[%s]/div[2]/div[1]/div/div/div/a' % ran_num)

          for el in elem:
              res_name = el.text
              print(el.text)

          doc = lxml.html.fromstring(html)
          elem = doc.xpath('//*[@id="column-main"]/ul/li[%s]/div[2]/div[2]/div[1]/div/div[2]/p[1]/span' % ran_num)

          for el in elem:
              res_point = el.text
              print(el.text)

          doc = lxml.html.fromstring(html)
          elem = doc.xpath('//*[@id="column-main"]/ul/li[%s]/div[2]/div[1]/div/div/div/a/@href' % ran_num)

          for el in elem:
              res_url = el
              print(el)

          doc = lxml.html.fromstring(html)
          elem = doc.xpath('//*[@id="column-main"]/ul/li[%s]/div[2]/div[1]/div/div/div/span' % ran_num)

          for el in elem:
              res_cate = el.text
              print(el.text)

if __name__ == '__main__':
  # get till page 5 (yaesu)
  ran_num = random.randint(1,5)
  result = get_taberogu("https://tabelog.com/tokyo/C13102/C36139/rstLst/lunch/?sort_mode=1&svd=20170611&svt=1900&svps=%s" % ran_num)

■実行結果

% python taberogu_test.py
割烹 嶋村
3.58
https://tabelog.com/tokyo/A1302/A130201/13000499/
(東京 / 割烹・小料理、天ぷら・揚げ物(その他)、丼もの(その他))

■ハマりポイント
lxmlがインストールできずこんなエラーが出るときは

   *********************************************************************************
    Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?
    *********************************************************************************

色々インストールする(Ubuntu)

sudo apt-get install libxml2-dev libxslt1-dev

これで次は成功する

pip install lxml

■slack
おきまりの、slackに噛ませるとこんな感じ