##環境
python version: Python 3.8.6
yaml
1 2pokemon: 3 css: li.product 4 multiple: true 5 type: Text 6 children: 7 name: 8 css: h2.woocommerce-loop-product__title 9 type: Text 10 price: 11 css: span.woocommerce-Price-amount 12 type: Text 13 image: 14 css: img.attachment-woocommerce_thumbnail 15 type: Attribute 16 attribute: src 17 url: 18 css: a.woocommerce-LoopProduct-link 19 type: Link
python
1import requests 2from selectorlib import Extractor, Formatter 3from pprint import pprint 4import re 5import time 6 7# Define a formatter for Price 8class Price(Formatter): 9 def format(self, text): 10 price = re.findall(r'\d+.\d+',text) 11 12 if price: 13 return price[0] 14 return None 15formatters = Formatter.get_all() 16 17 18 19extractor = Extractor.from_yaml_file('./scrapeme_listing_page.yml',formatters=formatters) 20 21r = requests.get('https://scrapeme.live/shop/') 22 23data = extractor.extract(r.text) 24pprint(data)
##ディレクトリ構造
![
python3.8の仮想環境で開発をしています。
##試したこと
from_yaml_file()からfomatterオプションを削除してファイルを実行しても、上記と同様の結果が得られたので、Priceクラス内のformat()関数の処理を通ってないように思える。
回答2件
あなたの回答
tips
プレビュー