从scrapy

时间:2017-07-06 12:17:54

标签: python scrapy web-crawler

我想抓取网站上的数据。我用这个代码

import scrapy 

class KamusSetSpider(scrapy.Spider):
    name = "kamusset_spider"
    start_urls = ['http://kbbi.web.id/abadi']

    def parse(self, response):
        SET_SELECTOR = '.tur highlight'
        for brickset in response.css(SET_SELECTOR):
            yield {
                'name': brickset.css(SET_SELECTOR).extract_first(),
            }

这是inspect元素:

enter image description here

我希望得到红色椭圆形中的每一个文字,如mengabadi,mengabadikan等。' b' tag => tur亮点。但是,我没有得到任何结果。enter image description here

问题是什么?怎么解决? 我改变了我的代码变成了这个:

def parse(self, response):
        for kamusset in response.css("div#d1"):
            text = kamusset.css("div.sub_17 b.tur.highlight::text").extract()
            print(dict(text=text))

但仍无效。它返回null。

3 个答案:

答案 0 :(得分:2)

选择器.tur highlight表示 - 在类highlight的所有元素中选择元素tur

要选择具有多个类的元素,请使用不带空格的选择器

SET_SELECTOR = '.tur.highlight'

答案 1 :(得分:0)

据我所知,您想从单个css_selector中的不同名称(不同名称)的不同位置(标签)提取文本。

text = kamusset.css("div.sub_17::text, b.tur.highlight::text").extract()

这肯定可以

答案 2 :(得分:0)

可以!

text : Selector(text=response.body).xpath('//b[@class="tur highlight"]/text()').extract()

将返回所有出现的列表。