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

公開日:2017-06-11 更新日:2020-10-02

Linux Mac Python Safari

t f B! P L

あれ、食べログって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に噛ませるとこんな感じ

About me

ゆかき(♀)

アラサー駆け出しインフラエンジニア
ど文系営業からSEへ転身し日々奮闘している人

一児の母

#AP応用情報 #HTML5Lv1 #第2種電気工事士 #DCP(Data Center Practitioner) #LPIC Lv2 #VCP6.5 #CCNP #Oracle Bronze #HTMLv5 #TOEIC860

Media

こちらのイベントで記事紹介いただいていた、嬉しい。

Line stamp

僭越ながら販売中

Green cat & Orange cat

Amazon