在Scrapy中选择数组的随机元素

时间:2017-07-02 15:45:58

标签: python scrapy

我有一只带有scrapy的蜘蛛

import scrapy

class QuotesSpider(scrapy.Spider):
    name = "website"
    start_urls = [
    'https://website.com',
    ]
    def parse(self, response):
        for main in response.css('div#main'):
            yield {
            'link': random.choice(main.css('li.afinidades div.content ul li h5 a::text')[0].extract()),
            }

有四个元素«链接»,我想随机取它们:现在是0,然后是3,然后是2,等等。

我试过了:

导入scrapy

class QuotesSpider(scrapy.Spider):
    name = "website"
    start_urls = [
    'https://website.com',
    ]
from random import randrange
key = randrange(0, 3)
    def parse(self, response):
        for main in response.css('div#main'):
            yield {
            'link': random.choice(main.css('li.afinidades div.content ul li h5 a::text')[key].extract()),
            }

没有结果。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

css()函数返回另一个Selector实例,而不是实际结果的数组。您必须在extract()函数后选择所需的索引。

'link': main.css('li.afinidades div.content ul li h5 a::text').extract()[key]

如果您需要了解更多信息,请查看有关选择器的Scrapy文档。 https://doc.scrapy.org/en/latest/topics/selectors.html