2017-01-30 51 views
2

我是非常好 begginer,所以放心吧。 我用google搜索了如何修复它,但是我得到的每个答案都是针对Xpath,而我正在使用CSS。如何删除 r n,空格并启用Scrapy css中的口音?

我下面这个教程https://hexfox.com/p/scrape-your-cinemas-listings-to-get-a-daily-email-of-films-with-a-high-imdb-rating/并达成这一点:

import scrapy 


class CinemaSpider(scrapy.Spider): 
    name = "cinema" 
    allowed_domains = ['cineroxy.com.br'] 
    start_urls = [ 
     'http://cineroxy.com.br/programacao-brisamar', 
    ] 

    def parse(self, response): 
     movie_names = response.css('.titulo p::text').extract() 
     for movie_name in movie_names: 
      yield { 
       'name': movie_name 
      } 

心中已经正确地执行,因此将虎视眈眈的信息,并创建一个JSON文件:

C:\Python27\Scripts>scrapy runspider cinema_scraper.py -o movies.json 

但结果却是这样的:

[ 
{"name": "\r\n          A Bailarina\r\n         "}, 
{"name": "\r\n          Assassins Creed - O Filme\r\n         "}, 
{"name": "\r\n          Cinquenta Tons Mais Escuros\r\n         "}, 
{"name": "\r\n          Minha M\u00e3e \u00e9 uma Pe\u00e7a 2\r\n         "}, 
{"name": "\r\n          Moana - Um Mar de Aventura\r\n         "}, 
{"name": "\r\n          Os Penetras 2 - Quem D\u00e1 Mais?\r\n         "}, 
{"name": "\r\n          Quatro Vidas de Um Cachorro\r\n         "}, 
{"name": "\r\n          Resident Evil 6: O \u00daltimo Cap\u00edtulo\r\n         "}, 
{"name": "\r\n          xXx: Reativado\r\n         "} 
] 

现在,我有3个问题需要解决输出/额外提示:\ r \ n,尝试提取突出的单词时出现大的空白区域和错误(生化危机6:原始图像为生化危机6:破坏图像)。

一件事这个网站的源代码都在与他人的心中已经研究不同的是,它写的标题前下降一行:

    <a href='../filme/resident-evil-6-o-ultimo-capitulo'> 
         <img id="cphConteudo_rptBusca_imgFilme_7" title="Resident Evil 6: O Último Capítulo" class="img" src="http://www.cineroxy.com.br/suiteinstitucional/arquivos/filmes/040920161914411.jpg" /> 
         <div class="titulo"> 
          <p> 
           Resident Evil 6: O Último Capítulo 
          </p> 
         </div> 
        <div class="passar-mouse"> 
         clique para ver os horários <img src="Arquitetura/Imagens/Icones/drop.png" alt="" /> 
        </div> 
        </a> 

很抱歉的长期职位和可能的巨大的愚蠢的错误。 在此先感谢。

+0

请注意,在'JSON输出\ uXXXX'序列是不是一个错误,它_is_有效的JSON语法,代表非ASCII字符的简单方法之一。一个JSON兼容的阅读器/程序可以很好地理解那些'\ uXXXX'序列;另一方面,读者可能不会。在其中一个答案中提到的“FEED_EXPORT_ENCODING”设置将写入UTF-8编码字符,而不会出现\ uXXXX转义。许多文本编辑器/浏览者都会将JSON文本文件的'\ xc3 \ x9a'序列('\ u00da'的UTF-8编码)解码为**Ú**,但它仍然被解释。人们仍然很难理解'\ xc3 \ x9a'。 –

+0

我不认为它不是一个错误,程序可以读取它。顺便说一句,我使用记事本++来打开JSON。我应该使用其他文本编辑器吗? – Lestat

回答

1
yield { 
       'name': movie_name.strip() 
      } 

代码:

"\r\n          A Bailarina\r\n         ".strip() 

出来:

'A Bailarina' 

strip()将摆脱的领导和尾部的空格

JSON:

那就是在添加settings.py

FEED_EXPORT_ENCODING = 'utf-8' 

文件:https://doc.scrapy.org/en/1.2/topics/feed-exports.html#feed-export-encoding

+0

工作得很好。但仍然不接受口音。 '{“name”:“生化危机6:O \\ u00daltimo Cap \ u00edtulo”},', – Lestat

+0

它没有奏效。我的setting.py:http://puu.sh/tGBcX.py 这个settings.py位于 C:\ Python27 \ Lib \ site-packages \ scrapy \ commands – Lestat