前提・実現したいこと
特定のサイトから「href属性」と「alt属性」含めた情報ををウェブスクレイピングで取得したい。
具体的には、下記の情報を取得します。
「パチンコORスロット,機種ID(href属性の一部),NEW!(alt属性),機種名、台数」
このうち、「機種ID(href属性の一部)」と「NEW!(alt属性)」以外は取得できていますが、
下記問題が発生しており、正確な情報を取得できておりません。
ご教授の程よろしくお願いいたします。
発生している問題・エラーメッセージ
①href属性の取得
→href属性を取得後、一番後ろの数字を任意で取得しましたが、結果を見ると同じ数字になっている。
②alt属性の取得
→NEWの情報のある機種は情報を取得し、そうでない場合は「N」としていますが、結果を見ると全てNEWになっている。
該当コード
Python3
1import requests 2from bs4 import BeautifulSoup 3from pprint import pprint 4url = 'https://p-town.dmm.com/shops/tokyo/12670' 5r = requests.get(url) 6soup = BeautifulSoup(r.text, 'lxml') 7 8data = {} 9for ul in soup.select('ul[class="list-machinesettings"]'): 10 machine_type = 'パチ' 11 if 'パチ' in ul.h4.text: 12 machine_type = 'パチンコ' 13 elif 'スロ' in ul.h4.text: 14 machine_type = 'スロット' 15 16 machines = [] 17 for img in soup.select('i img'): 18 new_machine = img.attrs.get('alt', 'N') 19 for a in ul.select('a[class="link"]'): 20 if 'href' in a.attrs: 21 machine_url = a.attrs['href'] 22 machine_id = machine_url.rsplit('/', 1)[1] 23 else: 24 machine_url = '機種ID無' 25 for li in ul.select('li[class="item"]'): 26 name = li.select_one('div[class="text"]').get_text(strip=True) 27 num = li.select_one('div[class="number"]').get_text(strip=True) 28 machines.append([machine_type,machine_id,new_machine,name, num]) 29 data[machine_type] = machines 30 31pprint(data)
試したこと
過去の履歴やQiitaを検索しましたが、どうしても上記2点の問題の解決には至りませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/14 23:35