Python:Scrapy只导出原始数据而不是text()?
我正在从此类导出:Python:Scrapy只导出原始数据而不是text()?,python,class,parsing,export,scrapy,Python,Class,Parsing,Export,Scrapy,我正在从此类导出: class MySpider(BaseSpider): name = "dozen" allowed_domains = ["yahoo.com"] start_urls = ["http://finance.yahoo.com/q/is?s=SCMP+Income+Statement&annual"] def parse(self, response): hxs = HtmlXPathSelector(respon
class MySpider(BaseSpider):
name = "dozen"
allowed_domains = ["yahoo.com"]
start_urls = ["http://finance.yahoo.com/q/is?s=SCMP+Income+Statement&annual"]
def parse(self, response):
hxs = HtmlXPathSelector(response)
revenue = hxs.select('//td[@align="right"]')
items = []
for rev in revenue:
item = DozenItem()
item["Revenue"] = rev.xpath("./strong/text()")
items.append(item)
return items[:7]
得到这个:
[<HtmlXPathSelector xpath='./strong/text()' data=u'\n 115,450\xa0\xa0\n '>]
我认为你做得很好。你能显示html吗 通常,我使用以下代码:
rev.xpath("./strong/text()").extract()[0].encode('utf8').strip()
您试图在第一个选择中使用太宽的Xpath表达式。 试着这样做:
def parse(self, response):
revenue = response.xpath('//td[@align="right"]/strong/text()')
items = []
for rev in revenue:
item = DozenItem()
item["Revenue"] = rev.re('\d*,\d*')
items.append(item)
return items[:3]
你所建议的是我过去是怎么做的,但现在它是正确的。但是您可以尝试使用.re('\d+'),例如。。。我不知道这个问题的原因,我不知道这个问题有多广泛或具体。这是非常有用的,但是导出会为每个数字显示
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
。你知道我如何减少几个额外的字符吗?是的,检查更新的表达式,我在mantime中进行了编辑。
def parse(self, response):
revenue = response.xpath('//td[@align="right"]/strong/text()')
items = []
for rev in revenue:
item = DozenItem()
item["Revenue"] = rev.re('\d*,\d*')
items.append(item)
return items[:3]