Hello,
Thanks for response, i convert it to utf-8 but i have the same problem.
item_loader.add_xpath('article_title', str(('//div[@class="mainbar 
articlePage"]/article/h1/text()')).encode("utf-8"))
when i do response .encoding i have utf-8 so that the original encoding of 
data is also utf-8.
do have idea, haw i can convert it correctly ?
thanks
Le mercredi 19 novembre 2014 17:43:14 UTC-5, ALI BEN ABDALLAH a écrit :
>
> Hello,
> Please i need help.
>
>
> i'm just beguining with scrapy crawling. i developed a simple spider that 
> get article from a journal web site but i have a big problem with the 
> encoding of the special characters and in every line of text i have the  
> [u" "].
> The original encoding of the thext is in UTF-8 and when i crawl text i 
> mentioned in python script also  this:
>
> #!/usr/bin/python
> # -*- coding: utf-8 -*-
>
> But i still have the same problem.
>
> This's an example of the output of my spider:
> --------------------------------------------------------------------------
> {'article_body': u'[u"Le feuilleton du scandale alimentaire au Liban se 
> poursuit \\xe0 un rythme soutenu. Il ne se passe en effet pas un seul jour 
> sans que de nouvelles r\\xe9v\\xe9lations concernant des violations \\xe0 
> la s\\xe9curit\\xe9 alimentaire ne soient faites, alimentant la 
> pol\\xe9mique sur les responsabilit\\xe9s dans un secteur livr\\xe9 \\xe0 
> l\'anarchie depuis des d\\xe9cennies.", u\'Le ministre de la Sant\\xe9, 
> Wa\\xebl Bou Faour, qui a fait \\xe9clater sa premi\\xe8re bombe \', u\'le 
> 11 novembre\', u\', provoquant une onde de choc parmi la population, est 
> revenu mercredi \\xe0 la charge en rendant publique une nouvelle longue 
> liste \', u\'(voir ici)\', u\' d\\u2019\\xe9tablissements vendant certains 
> produits non conformes aux normes. \', u\'(Voir les pr\\xe9c\\xe9dentes 
> liste \', u\'ici\', u\' et \', u\'ici\', u\').\', u\'\\xa0\', u\'(Lire 
> aussi:\', u\' \', u\'S\\xfbret\\xe9 alimentaire au Liban : un diagnostic 
> inqui\\xe9tant)\', u\'\\xa0\', u\'M. Bou Faour a aussi, lors de sa 
> conf\\xe9rence de presse, demand\\xe9 au minist\\xe8re de 
> l\\u2019Int\\xe9rieur la fermeture de plusieurs abattoirs qui ne 
> r\\xe9pondent pas aux normes de la s\\xe9curit\\xe9 alimentaire. Le 
> ministre a nomm\\xe9 les abattoirs de Akbiy\\xe9, Baisriy\\xe9 et 
> Ghaziy\\xe9, au Liban-Sud.\', u\'Le mohafez de Beyrouth a annonc\\xe9 mardi 
> soir la \', u"fermeture officielle de l\'abattoir de Beyrouth", u", une 
> annonce faite lors d\'une \\xe9mission t\\xe9l\\xe9vis\\xe9e sur la 
> cha\\xeene LBCI dont l\'invit\\xe9 \\xe9tait le ministre de la Sant\\xe9.", 
> u\'"Nous ne savons pas si l\\\'usine de broiement des os (li\\xe9e \\xe0 
> l\\\'abattoir de Beyrouth) a \\xe9t\\xe9 ferm\\xe9e, nous n\\\'acceptons 
> pas des mesures cosm\\xe9tiques, mais des mesures radicales. Le 
> probl\\xe8me de l\\u2019abattoir de Beyrouth ne r\\xe9side pas uniquement 
> dans l\\u2019odeur et la propret\\xe9 mais aussi dans l\\u2019eau tr\\xe8s 
> chlor\\xe9e", a soulign\\xe9 M. Bou Faour lors de sa conf\\xe9rence de 
> presse, affirmant qu\\\'il allait soumettre au gouvernement une 
> proposition\\xa0pour la construction d\\\'un nouvel abattoir au m\\xeame 
> emplacement que l\\\'ancien.\', u\'\\xa0\', u\'(Lire aussi : \', 
> u\'Scandale alimentaire : le coup de gr\\xe2ce \\xe0 un secteur en 
> souffrance ?\', u\')\', u\'\\xa0\', u\'Le ministre de la Sant\\xe9, qui a 
> aussi annonc\\xe9 sa d\\xe9cision de fermer une usine d\\u2019abattage de 
> poulet \\xe0 Sa\\xefda, a r\\xe9p\\xe9t\\xe9 que sa croisade contre les 
> aliments non conformes aux normes allait se poursuivre coute que coute.\', 
> u"Alors que les affaires d\'empoisonnement alimentaires sont fr\\xe9quentes 
> au Liban, l\\u2019Agence nationale d\\u2019information (Ani, officielle) a 
> rapport\\xe9 mercredi que 10 personnes avaient \\xe9t\\xe9 
> hospitalis\\xe9es apr\\xe8s avoir mang\\xe9 des fajita et du taouk \\xe0 
> Halba, dans le Akkar.", u\'\\xa0\', u\'',
>  'article_title': u'Scandale alimentaire : Bou Faour continue sur sa 
> lanc\xe9e, une nouvelle liste rendue publique',
>  'auteur': u'OLJ',
>  'date_publication': u'19/11/2014',
>  'section': u'\xc0 La Une',
>  'url': u'
> http://www.lorientlejour.com/article/896879/scandale-alimentaire-bou-faour-continue-sur-sa-lancee-une-nouvelle-liste-rendue-publique.html
> '}
>
> -------------------------------------------------------------------------------------------------
>
> this is my code:spider:
>
>
>
> ::::::::::::::::::::::::::::::::::::::::::::::
> #!/usr/bin/python
> # -*- coding: utf-8 -*-
>
> import scrapy
> import unicodedata
> from scrapy.spider import Spider
> from scrapy.selector import Selector
> from scrapy.http import Request, FormRequest
> from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
> from scrapy.selector import HtmlXPathSelector
> from scrapy.item import BaseItem
> from scrapy.contrib.loader import ItemLoader
> from scrapy.contrib.loader.processor import Compose, Join, MapCompose, 
> TakeFirst
> from w3lib.html import replace_escape_chars, remove_tags
> from scrapy.contrib.spiders import CrawlSpider, Rule
> from orient.items import ArticleLoader
> from scrapy.contrib.loader import XPathItemLoader
> from orient.removescripts import RemoveScripts
>
> from scrapylib.processors import default_input_processor, 
> default_output_processor
> from scrapy.utils.python import unicode_to_str
>
>
>
> def tag(values):
>     v = values.rsplit('Lire aussi', 1)[0]
>     return v
>
> class WhitehorseLoader(ArticleLoader):
>     default_input_processor = default_input_processor
>     default_output_processor = default_output_processor
>     article_title_out=Join(' ')
>     #article_body_in = Compose(default_input_processor)
>    
>     article_body_out= Join(' ')
>     #article_body_out=MapCompose(lambda string: string.strip())
> class OrientSpider(CrawlSpider):
>     name = "orient"
>     allowed_domains = r["lorientlejour.com"]
>     login_page = u'http://www.lorientlejour.com/account/login.php'
>     start_urls = ['http://www.lorientlejour.com']
>     rules = (Rule(SgmlLinkExtractor(allow=('/article/')), 
> callback='parse_url', follow=False), )
>                
>     
>    
>     def parse_url(self, response):
>
>         xpath = HtmlXPathSelector(response)
>         item_loader = WhitehorseLoader(response=response)
>         item_loader.add_xpath('auteur', 
> str(('//div[@class="attributes"]/text()')))
>         item_loader.add_xpath('date_publication', 
> str(('//div[@class="date"]/text()')))
>         item_loader.add_value('url', str((response.url).decode("utf-8")))
>         item_loader.add_xpath('section', str('//div[@class="mainbar 
> articlePage"]/h2/a/text()'))
>         item_loader.add_xpath('article_title', str(('//div[@class="mainbar 
> articlePage"]/article/h1/text()')).encode("utf-8"))
>         
> item_loader.add_xpath('article_body',tag(str(('//div[@class="text"]/p//text()'))))
>         item_loader.add_value('article_body', tag(str(value)))
>        
>         return str((item_loader.load_item()))
>         
>        
>
> :::::::::::::::item
>
>
> # -*- coding: utf-8 -*-
>
> # Define here the models for your scraped items
> #
> # See documentation in:
> # http://doc.scrapy.org/en/latest/topics/items.html
> import scrapy 
> from scrapy import Item, Field
> from scrapy.contrib.loader import ItemLoader
> from scrapy.contrib.loader.processor import TakeFirst
>
>
> class ArticleItem(scrapy.Item):
>     # define the fields for your item here like:
>   
>     url = Field()
>     auteur = Field()
>     date_publication = Field()
>     section = Field()
>     article_title = Field()
>     article_body = Field()
>     
>
> class ArticleLoader(ItemLoader):
>     default_item_class = ArticleItem
>     default_output_processor = TakeFirst()
>

-- 
You received this message because you are subscribed to the Google Groups 
"scrapy-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/scrapy-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to