如何在scrapy循环中选择元素?

时间:2019-08-26 13:52:35

标签: python xpath scrapy

我试图遍历网站中的元素以从中创建项目。但是,循环返回每个项目的完整响应列表,而不是单个项目。

网站代码:

<div id="resultsList">

<div class="result">
<div ...>
<p><b><a href="...">
<spctc>CONTENT I</spctc>
</a></b></p>
</div>
</div>

<div class="result">
<div ...>
<p><b><a href="...">
<spctc>CONTENT II</spctc>
</a></b></p>
</div>
</div>

...

</div>

我的蜘蛛代码(我必须先登录,所以蜘蛛会先通过一些功能,然后再将登录的网站传递给scrape函数而不是parse函数):

def scrape(self, response):      
    for article in response.xpath('//div[@class="result"]'):
        item = Article() # Creating a new Article object
        item['title'] = article.xpath('//spctc/text()').extract()
        print(item)

        yield item

使用此代码,每个项目看起来都相同:

{'title': ['CONTENT I',
           'CONTENT II', ...]}

我希望第一个项目为

{'title': ['CONTENT I']}

,第二项为

{'title': ['CONTENT II']}

2 个答案:

答案 0 :(得分:0)

尝试遍历文章列表... article.xpath('// spctc / text()')

答案 1 :(得分:0)

item['title'] = article.xpath('.//spctc/text()').extract()

成功了