2

私はヘブライ語のウェブサイトをスクラップするためにスクレイピーを使用しています。ただし、スクラップデータを UTF-8 にエンコードした後でも、ヘブライ文字を取得できません。CSV で奇妙な文字列 (× ×¨×¡×™ ×'עמ) を取得します。ただし、print same item をチェックすると、端末で正しい文字列を確認できます。以下は私が使用しているウェブサイトです。 http://www.moch.gov.il/rasham_hakablanim/Pages/pinkas_hakablanim.aspx

class Spider(BaseSpider):
    name = "moch"
    allowed_domains = ["www.moch.gov.il"]
    start_urls = ["http://www.moch.gov.il/rasham_hakablanim/Pages/pinkas_hakablanim.aspx"]

    def parse(self, response):

        data = {'ctl00$ctl13$g_dbcc924d_5066_4fee_bc5c_6671d3e2c06d$ctl00$cboAnaf': unicode(140),
                'SearchFreeText:': u'חפש',
                'ctl00$ctl13$g_dbcc924d_5066_4fee_bc5c_6671d3e2c06d$ctl00$txtShemKablan': u'',
                'ctl00$ctl13$g_dbcc924d_5066_4fee_bc5c_6671d3e2c06d$ctl00$txtMisparYeshut': u'',
                'ctl00$ctl13$g_dbcc924d_5066_4fee_bc5c_6671d3e2c06d$ctl00$txtShemYeshuv': u'הקלד יישוב',
                'ctl00$ctl13$g_dbcc924d_5066_4fee_bc5c_6671d3e2c06d$ctl00$txtMisparKablan': u'',
                'ctl00$ctl13$g_dbcc924d_5066_4fee_bc5c_6671d3e2c06d$ctl00$btnSearch': u'חפש',
                'ctl00$ScriptManager1': u'ctl00$ctl13$g_dbcc924d_5066_4fee_bc5c_6671d3e2c06d$ctl00$UpdatePanel1|ctl00$ctl13$g_dbcc924d_5066_4fee_bc5c_6671d3e2c06d$ctl00$btnSearch'}

        yield FormRequest.from_response(response,
                                        formdata=data,
                                        callback = self.fetch_details,
                                        dont_click = True)

    def fetch_details(self, response):
        # print response.body
        hxs = HtmlXPathSelector(response)
        item = MochItem()
        names = hxs.select("//table[@id='ctl00_ctl13_g_dbcc924d_5066_4fee_bc5c_6671d3e2c06d_ctl00_gridRashamDetails']//tr/td[2]/font/text()").extract()
        phones = hxs.select("//table[@id='ctl00_ctl13_g_dbcc924d_5066_4fee_bc5c_6671d3e2c06d_ctl00_gridRashamDetails']//tr/td[6]/font/text()").extract()

        index = 0

        for name in names:
            item['name'] = name.encode('utf-8')
            item['phone'] = phones[index].encode('utf-8')
            index += 1
            print item # This is printed correctly on termial. 

            yield item # If I create a CSV output file. Then I am not able to see proper Hebrew String

奇妙なことに、メモ帳++で同じcsvを開くと. 正しい出力を見ることができます。ということで対処法として。私がしたことは、メモ帳++でcsvを開き、エンコーディングをUTF-8に変更することです。そしてそれを保存しました。Excelでcsvを再度開くと、正しいヘブライ文字列が表示されます。

scrapy 内から CSV エンコーディングを指定する方法はありますか?

4

0 に答える 0