前提・実現したいこと
PythonでUberEatsのページからエリアごとのお店の数のデータを取得しようとスクレイピンングをしています。
しかしウェブページ上で「検証」をしHTMLを解析したことがある方ならわかるかと思いますがコードの左端に矢印の様なマークがついておりそこをクリックすると隠れているコードが出てきます。
自分が解析しているUberEatsのウェブページではお店の名前が埋め込まれているコードが<div class="fa i8 i9">の中に隠れており、本来は表示されていないためお店の名前のデータを取得しようとしてもできません。
上記のページから店名のデータを全て取得しようとしております。
発生している問題・エラーメッセージ
Python
1import pandas as pd 2import requests 3from bs4 import BeautifulSoup 4 5page = requests.get('https://www.ubereats.com/jp/feed?pl=JTdCJTIyYWRkcmVzcyUyMiUzQSUyMiVFNSU5MCU5MSVFNiU5NyVBNSVFNSVCOCU4MiUyMiUyQyUyMnJlZmVyZW5jZSUyMiUzQSUyMkNoSUpMNlpKcGlZRUFXQVI1X0hOWFpWTDZYYyUyMiUyQyUyMnJlZmVyZW5jZVR5cGUlMjIlM0ElMjJnb29nbGVfcGxhY2VzJTIyJTJDJTIybGF0aXR1ZGUlMjIlM0EzNC45NDg3MDYxJTJDJTIybG9uZ2l0dWRlJTIyJTNBMTM1LjY5ODQxNzElN0Q%3D') 6soup = BeautifulSoup(page.content, 'html.parser') 7 8menus = soup.find_all(class_= 'cc el ag bp bq') 9menu_list = [menu.find('img').get("alt") for menu in menus] 10 11print(menu_list) 12 13(base) TatsuyanoMacBook-Pro:MyPython tatsuya$ /Users/tatsuya/opt/anaconda3/bin/python /Users/tatsuya/Documents/MyPython/webscraping6.py 14[] 15 16↑何もないというアウトプットになってしまっている。本当であればお店の名前、今回の例で言うと[餃子の王将 東向日]がアウトプットとして出てきてほしい。 17
該当のソースコード
下記のHTMLのソースコードはウェブページのHTMLの一部を抜き出してきたものです。
下記のコードをそのままコードの中に入れるのではなく、あくまでも下記のPyhtonのコードを使って該当ページのHTMLデータを取得してスクレイピングしたいのです。
Python
1page = requests.get('https://www.ubereats.com/jp/feed?pl=JTdCJTIyYWRkcmVzcyUyMiUzQSUyMiVFNSU5MCU5MSVFNiU5NyVBNSVFNSVCOCU4MiUyMiUyQyUyMnJlZmVyZW5jZSUyMiUzQSUyMkNoSUpMNlpKcGlZRUFXQVI1X0hOWFpWTDZYYyUyMiUyQyUyMnJlZmVyZW5jZVR5cGUlMjIlM0ElMjJnb29nbGVfcGxhY2VzJTIyJTJDJTIybGF0aXR1ZGUlMjIlM0EzNC45NDg3MDYxJTJDJTIybG9uZ2l0dWRlJTIyJTNBMTM1LjY5ODQxNzElN0Q%3D') 2soup = BeautifulSoup(page.content, 'html.parser')
HTML
1<div class="fa i8 i9"> 2 <div class="af ia"> 3 <a tabindex="-1" href="https://www.ubereats.com/jp/kyoto/food-delivery/%E9%A4%83%E5%AD%90%E3%81%AE%E7%8E%8B%E5%B0%86-%E6%9D%B1%E5%90%91%E6%97%A5/SoD9-2nATD6LrOfgjQhWjA?pl=JTdCJTIyYWRkcmVzcyUyMiUzQSUyMiVFNSU5MCU5MSVFNiU5NyVBNSVFNSVCOCU4MiUyMiUyQyUyMnJlZmVyZW5jZSUyMiUzQSUyMkNoSUpMNlpKcGlZRUFXQVI1X0hOWFpWTDZYYyUyMiUyQyUyMnJlZmVyZW5jZVR5cGUlMjIlM0ElMjJnb29nbGVfcGxhY2VzJTIyJTJDJTIybGF0aXR1ZGUlMjIlM0EzNC45NDg3MDYxJTJDJTIybG9uZ2l0dWRlJTIyJTNBMTM1LjY5ODQxNzElN0Q%3D"> 4 <figure height="240" class="ib af ic b3"> 5 <div class="cc el ag bp bq"> 6 <img alt="餃子の王将 東向日" src = "https://d1ralsognjng37.cloudfront.net/b06557fe-f9a0-4ed0-b72b-dedba826a37b.jpeg" aria-hidden="true" class="cc e1 hw cy"> 7 </div> 8 <div class="ag gt au cu cc id aq">...</div> 9 </figure> 10 <div class="im au aw">...</div> 11 <div class="iq c3 c4 ir is it au aw">...</div> 12 </a> 13 <div class="ag d9 fs ic cc ia">...</div> 14 </div> 15<div>
試したこと
上記に記載した通りfind関数でスクレイピングしようと試みましたが残念ながら。。。
以下2点修正いたしましたが以前店名の情報は獲得できずにおります。
・classのcc el ag bp bqで、l(エル)が1(いち)になっていた
・img altを取得するのにget_text()を使っていたのでfind('img').get("alt")に修正
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/04 06:06
2020/09/04 06:36