如何删除\ r \ n,空格并在Scrapy css中启用重音?

时间:2017-01-30 08:38:47

标签: css web-scraping scrapy

非常 begginer,所以放轻松。 我用Google搜索了如何修复它,但我得到的每个答案都是针对Xpath而我使用的是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:O \ u00daltimo Cap \ u00edtulo 原作生化危机6:OÚltimoCapítulo)。

这个网站的源代码与我研究过的其他内容不同的一点是它在写标题之前删掉了一行:

<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>

很抱歉这篇长篇文章和可能出现的巨大愚蠢错误。 提前谢谢。

1 个答案:

答案 0 :(得分:3)

 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