繁体   English   中英

Python:Scrapy导出原始数据而不是仅导出text()吗?

[英]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&nbsp;&nbsp;</strong>
</td>
<td align="right">
<strong>89,594&nbsp;&nbsp;</strong>
</td>
<td align="right">
<strong>81,487&nbsp;&nbsp;</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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM