我正在做一场噩梦,数据被 Scrapy 报废。目前我使用 UTF-8 对其进行编码,即detail_content.select('p/text()[1]').extract()[0].encode('utf-8')
保存到 JSON 文件中,然后使用 Django 和移动应用程序再次显示捕获的文本。
在 JSON 文件中,转义的 HTML 使用 unicode 进行转义'blah blah \u00a34,000 blah'
现在我的问题是当我尝试在 django 模板或移动应用程序中显示文本时,实际的文字字符会显示:\u00a3
而不是£
我不应该在 JSON 中存储转义的 unicode 吗?使用 JSON 转义将 ASCII 存储在 JSON 文件中会更好吗?如果是这样,您将如何使用scrapy进行此操作?
杂乱无章的代码:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.http import Request
from scrapy.item import Item, Field
import datetime
import unicodedata
import re
class Spider(BaseSpider):
#spider stuff
def parse(self, response):
hxs = HtmlXPathSelector(response)
rows = hxs.select('//ul[@class = "category3"]/li')
for row in rows:
item = Item()
if len(row.select('div[2]/a/text()').extract()) > 0:
item['header'] = str(row.select('div[2]/a/text()')
.extract()[0].encode('utf-8'))
else:
item['header'] = ''
if len(row.select('div[2]/a/text()').extract()) > 0:
item['_id'] = str(row.select('div[2]/a/text()')
.extract()[0].encode('utf-8'))
else:
item['_id'] = ''
item['_id'] = self.slugify(item['_id'])[0:20]
item_url = row.select('div[2]/a/@href').extract()
today = datetime.datetime.now().isoformat()
item['dateAdded'] = str(today)
yield Request(item_url[0], meta={'item' : item},
callback=self.parse_item)
def parse_item(self, response):
hxs = HtmlXPathSelector(response)
detail_content = hxs.select('//*[@id="content-area"]')
item = response.request.meta['item']
item['description'] = str(detail_content.select('p/text()[1]')
.extract()[0])
item['itemUrl'] = str(detail_content.select('//a[@title="Blah"]/@href')
.extract()[0])
item['image_urls'] = detail_content.select('//img[@width="418"]/../@href')
.extract()
print item
return item