【发布时间】:2011-05-31 18:31:04
【问题描述】:
我是 python 和 scrapy 的新手,我正在学习 dmoz 教程。作为本教程建议的起始 URL 的一个小变体,我从 dmoz 示例站点中选择了一个日语类别,并注意到我最终得到的源导出显示的是 unicode 数值而不是实际的日语字符。
似乎我需要以某种方式使用TextResponse,但我不确定如何让我的蜘蛛使用该对象而不是基本 Response 对象。
- 我应该如何修改我的代码以在我的输出中显示日语字符?
- 如何去掉方括号、单引号和包裹输出值的“u”?
最终,我想要输出 say
オンラインショップ(这些是日文字符)
而不是当前的输出
[u'\u30aa\u30f3\u30e9\u30a4\u30f3\u30b7\u30e7\u30c3\u30d7'](Unicode)
如果你看我的截图,它对应于单元格 C7,文本标题之一。
这是我的蜘蛛(与教程中的蜘蛛相同,除了 start_url 不同):
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from dmoz.items import DmozItem
class DmozSpider(BaseSpider):
name = "dmoz.org"
allowed_domains = ["dmoz.org"]
start_urls = [
"http://www.dmoz.org/World/Japanese/"
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select('//ul/li')
items = []
for site in sites:
item = DmozItem()
item['title'] = site.select('a/text()').extract()
item['link'] = site.select('a/@href').extract()
item['desc'] = site.select('text()').extract()
items.append(item)
return items
settings.py:
FEED_URI = 'items.csv'
FEED_FORMAT = 'csv'
输出截图: http://i55.tinypic.com/eplwlj.png(对不起,我还没有足够的 SO 点来发布图片)
【问题讨论】:
-
抓取工作正常,问题在于如何将值写入磁盘。你是如何调用 Scrapy 来运行代码的?
-
@Thomas 我认为问题在于文本嵌入在列表中。一旦我从列表中提取它们,unicode 字符就会正确显示。