私はscrapy
ウェブサイトからスクレイプデータを選別するために使用しています。ただし、必要なデータは html 自体ではなく、javascript からのものです。だから、私の質問は:
そのような場合の値 (テキスト値) を取得するにはどうすればよいですか?
これは、私がスクレイプをスクリーニングしようとしているサイトです: https://www.mcdonalds.com.sg/locate-us/
取得しようとしている属性: 住所、連絡先、営業時間。
Chrome ブラウザー内で「右クリック」、「ソースの表示」を行うと、そのような値が HTML で使用できないことがわかります。
編集
ポールさん、おっしゃる通りに実行しadmin-ajax.php
、死体を見つけて見ましたが、今は本当に困っています。
json オブジェクトから値を取得し、それを自分の変数フィールドに格納するにはどうすればよいですか? 属性を 1 つだけ実行する方法を、一般の人や、スクレイピーを始めたばかりの人にも共有できれば幸いです。
これまでの私のコードは次のとおりです
アイテム.py
class McDonaldsItem(Item):
name = Field()
address = Field()
postal = Field()
hours = Field()
McDonalds.py
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
import re
from fastfood.items import McDonaldsItem
class McDonaldSpider(BaseSpider):
name = "mcdonalds"
allowed_domains = ["mcdonalds.com.sg"]
start_urls = ["https://www.mcdonalds.com.sg/locate-us/"]
def parse_json(self, response):
js = json.loads(response.body)
pprint.pprint(js)
長い編集は申し訳ありませんが、要するに、json値を属性に保存するにはどうすればよいですか? 例えば
***item['address'] = * 取得方法 ****
PS、これが役立つかどうかはわかりませんが、コマンドラインでこれらのスクリプトを実行します
スクラップクロール mcdonalds -o McDonalds.json -t json (すべてのデータを json ファイルに保存するため)
私がどれほど感謝しているかを強調することはできません。これをあなたに尋ねるのはちょっと不合理だと思いますが、時間がなくても大丈夫です。