2017-01-30 6 views
2

私はVERYですので、簡単に取ってください。 私はそれを修正する方法を探っていましたが、私が得たすべての答えは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 
      } 

それは情報をGRAPとJSONファイルが作成されますので、I'vは、適切に実行:

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つの問題がありますction:アクセントのある単語を抽出しようとすると、\ r \ n、大きな空白、バグ(Resident Evil 6:O \ u00daltimo Cap \ u00edtuloオリジナルはバイオハザード6:OÚltimoCapítulo)です。このサイトのソースコードがi'vが研究他の人と違うで持っている

ことの一つは、それがタイトルを書き込む前に1行をドロップすることです:

    <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'配列はバグではありません、それが有効なJSONの構文、非ASCII文字を表現する簡単な一つの方法を_is_ことに注意してください。 JSON互換のリーダー/プログラムは、これらの '\ uXXXX'シーケンスをうまく理解します。一方、人間の読者は、そうでないかもしれません。 'FEED_EXPORT_ENCODING'の答えの1つに言及すると、' \ uXXXX'がエスケープされずにUTF-8エンコードされた文字が書き出されます。多くのテキストエディタ/ビューアは、JSONテキストファイルから '\ xc3 \ x9a'シーケンス(' \ u00da 'のUTF-8エンコーディング)を**Ú**としてデコードしますが、まだ解釈されます。人間は '\ xc3 \ x9a'を理解するのに苦労するでしょう。 –

+0

私はそれがバグではなく、プログラムはそれを読むことができます。ところで、私はJSONを開くためにNotepad ++を使っています。別のテキストエディタを使うべきですか? – 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 ":" Resident Evil 6:O \ u00daltimo Cap \ u00edtulo "}、'、 – Lestat

+0

これはうまくいかなかった。私のsettings.py:http://puu.sh/tGBcX.py このsettings.pyは C:\ Python27 \ Lib \ site-packages \ scrapy \ commandsにあります。 – Lestat

関連する問題