Saya menggunakan perpustakaan Permintaan Python yang hebat . Saya perhatikan bahwa dokumentasi yang bagus memiliki banyak contoh tentang bagaimana melakukan sesuatu tanpa menjelaskan alasannya . Sebagai contoh, kedua r.text
dan r.content
ditampilkan sebagai contoh bagaimana untuk mendapatkan respon server. Tetapi di mana dijelaskan apa yang dilakukan properti-properti ini? Misalnya, kapan saya akan memilih salah satu dari yang lain? Saya melihat bahwa kadang-kadangr.text
mengembalikan objek unicode , dan saya kira akan ada perbedaan untuk respons non-teks. Tapi di mana semua ini didokumentasikan? Perhatikan bahwa dokumen tertaut menyatakan:
Anda juga dapat mengakses isi respons sebagai byte, untuk permintaan non-teks:
Tapi kemudian itu menunjukkan contoh respons teks! Saya hanya dapat beranggapan bahwa kutipan di atas berarti mengatakan non-text responses
daripada non-text requests
, karena permintaan non-teks tidak masuk akal dalam HTTP.
Singkatnya, di mana dokumentasi perpustakaan yang tepat, yang bertentangan dengan tutorial (sangat baik) di situs Permintaan Python?
sumber
Jawaban:
The antarmuka pengembang memiliki rincian lebih lanjut:
r.text
adalah konten respons dalam Unicode, danr.content
merupakan konten respons dalam byte.sumber
r.text
lebih disukai untuk tanggapan tekstual, seperti dokumen HTML atau XML, danr.content
lebih disukai untuk jenis berkas "biner", seperti gambar atau berkas PDF.r.content
, bukan yang terselubungr.text
.r.text
danr.content
sebagai teks. Mengapa tidak ditampilkanr.content
sebagai teks danr.text
sebagai bit (jika memang seperti itu)?Tampak jelas dari dokumentasi adalah bahwa r.content
Jika Anda membaca lebih jauh ke bawah halaman itu membahas misalnya file gambar
sumber
b
sebelum contoh pertama dengan teks "untuk permintaan non-teks", yang berarti bahwa objek tersebut adalah objek byte. Tidak jelas mengapa byte ditampilkan sebagai teks, mungkin itu adalah 'kebaikan' Python lainnya, tetapi membingungkan dalam konteks ini. Terima kasih.requests
python 3 di halaman. konten memberikan kesalahan ini:if 'rss' in page.content:
->TypeError: a bytes-like object is required, not 'str'