53506


「食べログ」から営業時間を取得し、それを平日と土日に分けて

[code]

    平日開始時刻, 平日終了時刻, 土日祝開始時刻, 土日祝日終了時刻, 定休日
    
[/code]

というようにcsvに出力したいです。

今のところpandasを使ってcsvに出力をしようと考えています。  
どうやれば上手く平日土日を判別して、またそれを区切って出力できるかがわかりません。  
宜しくお願いします。

[code]

    <kunifさんより>
    
    # -*- coding: utf-8 -*-
    import requests
    from bs4 import BeautifulSoup
    import re
    newlines = re.compile(r'\n{2,}')
    
    def scrape_info(soup_table):
      """
      基本情報の抽出
      """
      global newlines
      soup_telnum = soup_table.find("strong", class_="rstinfo-table__tel-num")
      soup_address = soup_table.find("p", class_="rstinfo-table__address")
      soup_tr_list = soup_table.find_all("tr")
      for soup_tr in soup_tr_list:
        if soup_tr.th.string in {"店名", "営業時間"}:
          item = ''
          if (soup_tr.th.string == "店名"):
            item = soup_tr.td.get_text().strip()
          else:
            item = newlines.sub("\n", soup_tr.td.get_text("\n").strip())
          print(item)
      print(soup_telnum.get_text())
      print(soup_address.get_text())
      return
    
    def scrape_item(item_url):
      """
      個別情報ページのパーシング
      """
      r = requests.get(item_url)
      if r.status_code != requests.codes.ok:
        print(f"error:not found{item_url}")
        return
      soup = BeautifulSoup(r.content, 'lxml')
      soup_table = soup.find("table", class_="rstinfo-table__table")
      scrape_info(soup_table)
      return
    
    scrape_item('https://tabelog.com/tokyo/A1303/A130301/13182370/')
    
[/code]


CC BY-SA 4.0
2019-03-13T14:53:26.637
53407
2019-03-18T01:06:03.617
2019-03-14T05:24:38.623
32145
32145
question
python python3 web-scraping beautifulsoup
Python 平日土日を分けてcsvに出力したい


クローズされようとしているところに蛇足かもしれませんが。

解決策では無いですが、１つのアイデアとして、「営業時間」「定休日」のテキストをプログラミング言語または設定情報ファイルのソースコードに見立てて処理してみる、というのが考えられます。  
先ずは何らかの最小限のルールや法則があると仮定して、処理系を作り、そこから外れる記述については、前処理・補完処理・例外処理など加えて改良していけば良いと思われます。

最終結果は、1週間(24時間×7日間)の営業時間&定休日をあらわすグラフを作成できるようなデータが出力されることを目標にすれば良いでしょう。  
そこまでやれば、そこからさらに抽象化して、「平日開始時刻, 平日終了時刻, 土日祝開始時刻, 土日祝日終了時刻,
定休日」のデータを作成するのは、それほど難しくないのでは？

ちょっとした単語しか知らないのでイメージでしか無いですが、[ドメイン固有言語](https://ja.wikipedia.org/wiki/%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E5%9B%BA%E6%9C%89%E8%A8%80%E8%AA%9E)とか[データ記述言語](https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%BC%E3%82%BF%E8%A8%98%E8%BF%B0%E8%A8%80%E8%AA%9E)と呼ばれる仕組みに似ているでしょう。

以下のようなコンパイラ作成のためのツールが応用できるのではないでしょうか？

[PLY (Python Lex-Yacc)](http://www.dabeaz.com/ply/index.html) / [SLY (Sly Lex-
Yacc)](https://sly.readthedocs.io/en/latest/)

[Lark - a modern parsing library for Python](https://github.com/lark-
parser/lark) / [Python
構文解析ライブラリLarkを使って簡単な自作言語処理系をつくる](https://qiita.com/k5trismegistus/items/358d58bcd50eb3f67fe8)


CC BY-SA 4.0
2019-03-18T01:06:03.617
53506
2019-03-18T01:06:03.617
26370
53407
answer