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

当使用第三方库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

学习是最好的投资!

membalas semua(2)
大家讲道理

Cuba menjawab soalan anda, saya rasa pemahaman anda tentang pengekodan python agak tersasar.
1. Kedua-dua permintaan dan permintaan hanyalah pakej pelaksanaan protokol http.
Pengekodan mesej pemulangan paket datang daripada tapak web yang dilawati oleh protokol HTTP Format pengekodan akan ditulis dalam pengepala protokol http.
Contohnya, kod berikut:
r=requests.get('http://www.baidu.com')
print r.headers['Content-Type']
Output:
text/html;charset=UTF-8
Ini menunjukkan format UTF-8 bagi mesej respons.
Begitu juga dengan scrapy.Request.
2. Jika charset yang dikembalikan=gbk2312, anda boleh menentukan sama ada untuk menukar kodnya ke dalam pengekodan yang anda perlukan berdasarkan keperluan kod anda.
r=requests.get('http://www.baidu.com')
print r.content[:1000].decode('utf-8')
print r.content[: 1000].decode('utf-8').encode('gbk')

洪涛

Hanya gunakan nyahkod dan pengekodan, tidak kira sama ada ia buruk atau tidak.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan