मैं एक वेबसाइट की सामग्री को पढ़ने की कोशिश कर रहा हूं लेकिन मुझे एक खाली बाइट ऑब्जेक्ट मिलता है, b''

import urllib3
from urllib3 import PoolManager
urllib3.disable_warnings()
https = PoolManager()

r = https.request('GET', 'https://minemen.club/leaderboards/practice/')

print(r.status)
print(r.read())

जब मैं वेब ब्राउज़र में यूआरएल खोलता हूं तो मुझे वेबसाइट दिखाई देती है, और r.status 200 (सफलता) है।

r.read() सामग्री क्यों नहीं लौटाता?

3
sef sf 4 मई 2020, 15:58
1
मैं इस लाइन को छोड़ दूंगा urllib3.disable_warnings() और देखूंगा कि क्या आपको कोई उपयोगी संदेश मिलता है।
 – 
norok2
4 मई 2020, 16:02
इस मामले में कोई चेतावनी नहीं है, लेकिन आपका यह कहना सही है कि चेतावनियों को अक्षम नहीं किया जाना चाहिए, खासकर जब चीजें अपेक्षा के अनुरूप नहीं होती हैं।
 – 
Keldorn
4 मई 2020, 16:07

3 जवाब

आपको क्या लगता है कि यह गलत है? निम्नलिखित का प्रयास करें, आपके पास बहुत अधिक आउटपुट होगा:

print(r.data)

इसका उपयोग कैसे करें, यह देखने के लिए HTTPResponse देखें। r वस्तु जो आपको मिली है।

2
Keldorn 4 मई 2020, 16:04

requests लाइब्रेरी का उपयोग करने का प्रयास करें।

website_content = requests.get(url)
print(website_content.content)  # website page content
0
Kunal Sikri 4 मई 2020, 16:07

इस प्रकार urllib3.response.HTTPResponse.read काम करना चाहिए।

इसे उदाहरण के लिए यहां urllib3 के योगदानकर्ताओं में से एक द्वारा समझाया गया है:

यह दस्तावेज़ीकरण के बारे में है। आप डिफ़ॉल्ट रूप से read() का उपयोग नहीं कर सकते, क्योंकि डिफ़ॉल्ट रूप से सभी सामग्री का उपयोग data में किया जाता है। अगर आप चाहते हैं read() काम करने के लिए, आपको कॉल पर preload_content=True को urlopen पर सेट करना होगा। इसे आजमाना चाहते हैं?

तो आप बस r.data का उपयोग कर सकते हैं।

0
mkrieger1 4 मई 2020, 16:17