python - 使用Scrapy中的Request的时候,怎么把拿到的内容编码转换为utf-8?
PHPz
PHPz 2017-04-18 09:06:14
0
2
1150

当使用第三方库requests的时候,可以这样转换:

import requests

html = requests.get('http://example.com')
html.encoding = 'utf-8'

问题:
使用Scrapy中的Request的时候,怎么把拿到的内容编码转换为utf-8?

demo:

import scrapy


class StackOverflowSpider(scrapy.Spider):
    name = 'stackoverflow'
    start_urls = ['http://stackoverflow.com/questions?sort=votes']

    def parse(self, response):
        for href in response.css('.question-summary h3 a::attr(href)'):
            full_url = response.urljoin(href.extract())
            yield scrapy.Request(full_url, callback=self.parse_question)

    def parse_question(self, response):
        yield {
            'title': response.css('h1 a::text').extract_first(),
            'votes': response.css('.question .vote-count-post::text').extract_first(),
            'body': response.css('.question .post-text').extract_first(),
            'tags': response.css('.question .post-tag::text').extract(),
            'link': response.url,
        }
PHPz
PHPz

学习是最好的投资!

répondre à tous(2)
大家讲道理

En essayant de répondre à votre question, j'ai l'impression que votre compréhension du codage Python est un peu mauvaise.
1. Les requêtes et les requêtes ne sont que des packages d'implémentation du protocole http.
L'encodage du message de retour du paquet provient du site Web visité par le protocole HTTP. Le format d'encodage sera écrit dans l'en-tête du protocole http.
Par exemple, le code suivant :
r=requests.get('http://www.baidu.com')
print r.headers['Content-Type']
Sortie :
text/html;charset=UTF-8
Ceci indique le format UTF-8 du message de réponse.
Il en va de même pour Scrapy.Request.
2. Si le charset renvoyé = gbk2312, vous pouvez déterminer s'il faut le transcoder dans l'encodage dont vous avez besoin en fonction de vos besoins en code.
r=requests.get('http://www.baidu.com')
print r.content[:1000].decode('utf-8')
print r.content[: 1000].decode('utf-8').encode('gbk')

洪涛

Utilisez simplement le décodage et l’encodage, que ce soit scrapy ou non.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal