cari

Rumah  >  Soal Jawab  >  teks badan

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

当使用第三方库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,
        }
PHPzPHPz2805 hari yang lalu1126

membalas semua(2)saya akan balas

  • 大家讲道理

    大家讲道理2017-04-18 09:08:14

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

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 09:08:14

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

    balas
    0
  • Batalbalas