私はPythonとScrapyにはかなり新しく、Scrapyの助けを借りてネストされたJSONを作成する方法についての私の頭の中で問題を抱えています。Scrapでアイテムデータをネストする
HTMLから必要な要素を選択することは、XPathヘルパーとグーグルの助けを借りて問題にはなりませんでした。私は、私が望むJSON構造体をどうやって取得するのかについてはあまりよく分かりません。
は、私は次のようになり望むJSON構造:私はhttps://stackoverflow.com/a/25096896/6856987を見つけた
<ul>
<li class="title"><h2>Monday</h2></li>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
<ul>
<li class="title"><h2>Tuesday</h2></li>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
、私はしかし、私のニーズに合わせて、これを適応することができませんでした:
{"menu": {
"Monday": {
"alt1": "Item 1",
"alt2": "Item 2",
"alt3": "Item 3"
},
"Tuesday": {
"alt1": "Item 1",
"alt2": "Item 2",
"alt3": "Item 3"
}
}}
HTMLは次のようになります。私はこれをどうやって達成するかについて、正しい方向で微妙に感謝しています。
編集:Padraicが提供するナッジを使用して、私が達成したいことに一歩近づくことができました。私は以下のことを考え出しました。これは私の前の状況よりも少し改善されています。 JSONはまだ私が望む場所ではありません。
Scrapyクモ:
import scrapy
from dmoz.items import DmozItem
class DmozSpider(scrapy.Spider):
name = "dmoz"
start_urls = ['http://urlto.com']
def parse(self, response):
uls = response.xpath('//ul[position() >= 1 and position() < 6]')
item = DmozItem()
item['menu'] = {}
item['menu'] = {"restaurant": "name"}
for ul in uls:
item['menu']['restaurant']['dayOfWeek'] = ul.xpath("li/h2/text()").extract()
item['menu']['restaurant']['menuItem'] = ul.xpath("li/text()").extract()
yield item
結果のJSON:私は、これで間違って私が指すことができるよりも多くの巧妙なうまくいけば、誰かが千と一つのことをやってるよう
[
{
"menu":{
"dayOfWeek":[
"Monday"
],
"menuItem":[
"Item 1",
"Item 2",
"Item 3"
]
}
},
{
"menu":{
"dayOfWeek":[
"Tuesday"
],
"menuItem":[
"Item 1",
"Item 2",
"Item 3"
]
}
}
]
は、それは確かに感じています私は正しい方法です。
'dmoz.items.DmozItem'を見ることはできますか? – Sam