簡體   English   中英

Scrapy輸出提供國際unicode字符(例如日語字符)

[英]Scrapy output feed international unicode characters (e.g. Japanese chars)

我是python和scrapy的新手,我正在關注dmoz教程。 作為教程建議的起始URL的一個小變體,我從dmoz示例站點中選擇了一個日語類別,並注意到我最終獲得的feed導出顯示的是unicode數值而不是實際的日語字符。

看起來我需要以某種方式使用TextResponse ,但我不知道如何讓我的蜘蛛使用該對象而不是基本的Response對象。

  1. 我應該如何修改我的代碼以在輸出中顯示日語字符?
  2. 如何擺脫方括號,單引號和包含輸出值的'u'?

最終,我希望有一個輸出說

オンラインショップ (這些是日本字符)

而不是當前的輸出

[u'\\ u30aa \\ u30f3 \\ u30e9 \\ u30a4 \\ u30f3 \\ u30b7 \\ u30e7 \\ u30c3 \\ u30d7'] (unicodes)

如果您查看我的屏幕截圖,它對應於單元格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點發布圖片)

當您從頁面中刮取文本時,它將以Unicode格式存儲。

你想要做的是將其編碼為類似UTF8的東西。

unicode_string.encode('utf-8')

此外,當您使用選擇器提取文本時,即使只有一個結果,它也會存儲在列表中,因此您需要選擇第一個元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM