Scrapy中的Xpath与CSS选择器:为什么数据存储方式不同?

时间:2019-02-13 06:57:31

标签: python json scrapy

我可以使用两种不同的方法来提取文章标题:xpath vs. css。他们会给我相同的结果,但有一个区别。使用xpath会将数据(json文件)存储在方括号["Some Title"]中,而css选择器仅存储不带括号"Some Title"的数据。我实际上不想用方括号存储数据。 我该如何使用xpath?

这是我提取文档标题的代码:

CSS选择器

def parse_article(self, response):
    def extract_with_css(query):
        return response.css(query).get(default='').strip() 


    yield {
        'title': extract_with_css('div#title h2::text')           
          }

Xpath

 def parse_article(self, response):
    def extract_with_xpath(query):
        return response.xpath(query).extract() 


    yield {
        'title': extract_with_xpath('//div[@id="title"]/h2/text()') 
          }

1 个答案:

答案 0 :(得分:1)

将代码从extract()修改为get()

def extract_with_xpath(query):
    return response.xpath(query).get(default='').strip() 

方法extract返回所有匹配项,而get仅返回第一个匹配项。