我使用XPath语法和Scampy来抓取具有以下结构的网页
<ul id="brandList">
<li class="no-mrg">
<a href="link">
<span class="single-logo"><img src="image.png"/></span>
<span class="single-brand">BRAND1</span>
</a>
</li>
<li class="no-mrg">
<a href="link2">
<span class="single-logo"><img src="image2.png"/></span>
<span class="single-brand">BRAND2</span>
</a>
</li>
...
我使用了报纸,但因为我是新手而且我不明白我错在哪里。我没有得到预期的结果
这是代码
def parse(self, response):
for sel in response.xpath("//li[@class='no-mrg']"):
brand = BrandItem()
brand['brand'] = sel.xpath("span[@class='single-brand']/text()").extract()
brand['logo'] = sel.xpath("img/@src").extract()
yield brand
我使用此函数来获取json对象,但我没有得到预期的对象。 我会得到一个具有以下结构的json对象:
[
{brand: 'brand1', logo: 'logo'},
]
我很确定我错误的XPath语法
答案 0 :(得分:1)
如果要将项目输出为json,请使用scrapy crawl spider -t json -o filename.json
。
此外,您的xpath应该是这样的:
def parse(self, response):
for sel in Selector(response).xpath("//li[@class='no-mrg']/a"):
brand = BrandItem()
brand['brand'] = sel.xpath("span[@class='single-brand']/text()").extract()
brand['logo'] = sel.xpath("span[@class='single-logo']/img/@src").extract()
yield brand