मेरे पास बड़ी संख्या में छोटे URL हैं और मैं उनका विस्तार करना चाहता हूं। मुझे निम्नलिखित कोड कहीं ऑनलाइन मिला (मैंने स्रोत को याद किया):

short_url = "t.co/NHBbLlfCaa"
r = requests.get(short_url)
if r.status_code == 200:
    print("Actual url:%s" % r.url)

यह पूरी तरह से काम करता है। लेकिन मुझे यह त्रुटि तब मिलती है जब मैं एक ही सर्वर को कई बार पिंग करता हूं:

urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='www.fatlossadvice.pw', port=80): अधिकतम पुनर्प्रयास url के साथ पार हो गए: /TIPS/KILLED-THAT-TREADMILL-workout-WORD-TO-TIMMY-GACQUIN.ASP ( NewConnectionError के कारण (': एक नया कनेक्शन स्थापित करने में विफल: [Errno 11004] getaddrinfo विफल',))

मैंने यहां सेट जैसे कई समाधानों की कोशिश की: ए>, लेकिन कुछ भी काम नहीं किया।

मैं एक और समाधान के बारे में सोच रहा था, जो अनुरोध में उपयोगकर्ता एजेंट को पास करना है, और हर बार जब मैं इसे यादृच्छिक रूप से बदलता हूं (बड़ी संख्या में उपयोगकर्ता का उपयोग करके):

user_agent_list = [
        'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0',
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:25.0) Gecko/20100101 Firefox/25.0',
        'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0',
        'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36',
    ]

r = requests.get(short_url, headers={'User-Agent': user_agent_list[np.random.randint(0, len(user_agent_list))]})
if r.status_code == 200:
    print("Actual url:%s" % r.url)

मेरी समस्या यह है कि r.url हमेशा लंबे वाले (विस्तारित वाले) के बजाय छोटा url लौटाता है।

मुझे किसकी याद आ रही है?

0
Minions 28 जून 2019, 17:55

1 उत्तर

सबसे बढ़िया उत्तर

आप उस पृष्ठ पर पुनर्निर्देशन को रोकने के लिए allow_redirects=False को requests.get() विधि में जोड़कर त्रुटि को रोक सकते हैं जो मौजूद नहीं है (और इस प्रकार त्रुटि को बढ़ाता है)। आपको स्वयं सर्वर द्वारा भेजे गए हेडर की जांच करनी होगी (XXXX को https से बदलें, रिक्त स्थान हटाएं):

import requests

short_url = ["XXXX t.co /namDL4YHYu",
 'XXXX t.co /MjvmV',
 'XXXX t.co /JSjtxfaxRJ',
 'XXXX t.co /xxGSANSE8K',
 'XXXX t.co /ZRhf5gWNQg']

for url in short_url:
    r = requests.get(url, allow_redirects=False)
    try:
        print(url, r.headers['location'])
    except KeyError:
        print(url, "Page doesn't exist!")

प्रिंट:

XXXX t.co/namDL4YHYu http://gottimechillinaround.tumblr.com/post/133931725110/tip-672
XXXX t.co/MjvmV Page doesn't exist!
XXXX t.co/JSjtxfaxRJ http://www.youtube.com/watch?v=rE693eNyyss
XXXX t.co/xxGSANSE8K http://www.losefattips.pw/Tips/My-stretch-before-and-after-my-workout-is-just-as-important-to-me-as-my-workout.asp
XXXX .co/ZRhf5gWNQg http://www.youtube.com/watch?v=3OK1P9GzDPM
1
Andrej Kesely 28 जून 2019, 18:58