[英]Python: Scrapy exports raw data instead of text() only?
我正在从此类中导出:
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 '>]
但是我只想要115,450
。
如果将.extract()
添加到item["Revenue"]
行的末尾,则不会输出任何内容。
这是html的部分,其中包括我要尝试抓取的内容:
<tr>
<td colspan="2">
<strong>Total Revenue</strong>
</td>
<td align="right">
<strong>115,450 </strong>
</td>
<td align="right">
<strong>89,594 </strong>
</td>
<td align="right">
<strong>81,487 </strong>
</td>
</tr>
您尝试对第一个选择使用过于宽泛的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]
我觉得你过得不错。 可以显示html吗?
通常,我使用以下代码:
rev.xpath("./strong/text()").extract()[0].encode('utf8').strip()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.