1つのオプションは、Parsley DSL
parslepyを使用することです(免責事項:私はparslepyを書いた)Pythonでthe languageの実装です
parslepyで、あなたは、XPathやCSSセレクタを使用することができます。あなたはPython dictを取得します。外部ファイルがルールにJSONオブジェクトである可能性があり
# -*- coding: utf-8 -*-
import parslepy
import scrapy
class HnSpider(scrapy.Spider):
name = "hn"
allowed_domains = ["news.ycombinator.com"]
start_urls = (
'https://news.ycombinator.com/',
)
parselet = parslepy.Parselet({
"_items(tr.athing)": [
{
"title": "td.title > a",
"source": "td.title span a",
"rank": "span.rank",
"--(./following-sibling::tr[1])":
{
"score": "span.score",
"age": "span.age",
"comments": "span.age ~ a:last-child"
}
}
]
})
def parse(self, response):
return self.parselet.parse_fromstring(
response.body).get("_items", [])
:
はここscrapyのための出力項目を保持しているとして、コールバックで使用されるルールで「_items」特殊キーと例のハッカーニュースクモです。スパイダーのself.parselet
オブジェクトをこのJSONファイルのデータで初期化する場合は、上記の例のようにコールバックを保持することができます。
リンクには他の特殊キーを使用すると想像することができます。