【发布时间】:2016-08-24 12:01:03
【问题描述】:
我编写了一个简单的脚本来从某个站点提取数据。脚本按预期工作,但我对输出格式不满意
这是我的代码
class ArticleSpider(Spider):
name = "article"
allowed_domains = ["example.com"]
start_urls = (
"http://example.com/tag/1/page/1"
)
def parse(self, response):
next_selector = response.xpath('//a[@class="next"]/@href')
url = next_selector[1].extract()
# url is like "tag/1/page/2"
yield Request(urlparse.urljoin("http://example.com", url))
item_selector = response.xpath('//h3/a/@href')
for url in item_selector.extract():
yield Request(urlparse.urljoin("http://example.com", url),
callback=self.parse_article)
def parse_article(self, response):
item = ItemLoader(item=Article(), response=response)
# here i extract title of every article
item.add_xpath('title', '//h1[@class="title"]/text()')
return item.load_item()
我对输出不满意,例如:
[scrapy] 调试:从 http://example.com/tag/1/article_name> 抓取 {'标题': [u'\xa0"\u0412\u041e\u041e\u0411\u0429\u0415-\u0422\u041e \u0421\u0412\u041e\u0411\u041e\u0414\u0410\u0417\u0410\u041a\u001 \u041d\u0427\u0418\u0412\u0410\u0415\u0422\u0421\u042f"']}
我认为我需要使用自定义 ItemLoader 类,但我不知道如何使用。需要你的帮助。
TL;DR 我需要将由 Scrapy 抓取的文本从 unicode 转换为 utf-8
【问题讨论】:
-
这只是拼凑打印 unicode 字符(西里尔文)。你如何保存你的刮掉的物品?一旦你保存了它,你将如何处理它? Unicode 问题通常取决于您用于查看 Unicode 数据的软件。
-
稍后我将把它保存到 postgresql 数据库(使用管道),但现在我以
scrapy crawl article -o file.json运行它,我在 json 文件中看到相同的输出。不得不承认我是 Scrapy 的新手,所以我感谢任何批评者)
标签: python-2.7 unicode scrapy