0

我怎样才能删除[u'\n\n\n result here \n\n\n'] 并得到一个结果[u'result here']......我正在使用scrapy

def parse_items(self, response):
  str = ""
  hxs = HtmlXPathSelector(response)

  for titles in titles:
      item = CraigslistSampleItem()
      item ["job_id"] = (id.select('text()').extract() #ok
      items.append(item)
  return(items)
end

谁能帮我?

4

2 回答 2

4
id.select('text()').extract() 

返回包含您的文本的字符串列表。您应该遍历该列表以剥离每个项目或使用切片,例如 your_list[0].strip() 来执行剥离空白。Strip 方法实际上与字符串数据类型相关联。

def parse_items(self, response):
  str = ""
  hxs = HtmlXPathSelector(response)

  for titles in titles:
      item = CraigslistSampleItem()
      item ["job_id"] = id.select('text()').extract()[0].strip() #this should work if #there is some string data available. otherwise it will give an index out of range error.
      items.append(item)
  return(items)
end
于 2013-08-28T06:14:46.197 回答
4

替代使用 Python 的.strip()

normalize-space()您可以在选择“job_id”的 XPath 表达式周围使用 XPath 函数:

def parse_items(self, response):
    hxs = HtmlXPathSelector(response)

    for titles in titles:
        item = CraigslistSampleItem()
        item ["job_id"] = title.select('normalize-space(.//td[@scope="row"])').extract()[0].strip()
        items.append(item)
    return(items)

注 1:我使用的 XPath 表达式基于https://careers-cooperhealth.icims.com/jobs/search?ss=1&searchLocation=&searchCategory=&hashed=0

注意 2 使用.strip(): with id.select('text()').extract()[0].strip()you get的答案u'result here',而不是列表。

这很可能是您需要的,但是如果您想保留列表,因为您要求删除[u'\n\n\n result here \n\n\n']并获得结果为[u'result here'],您可以使用类似的东西,使用 Python 的map()

item ["job_id"] = map(unicode.strip, id.select('text()').extract())
于 2013-08-28T07:42:58.767 回答