python - स्क्रीन स्क्रेपिंग: "HTTP त्रुटि 403 के आसपास प्राप्त करना: robots.txt द्वारा अस्वीकृत अनुरोध"




screen-scraping beautifulsoup (6)

आपके द्वारा प्राप्त की जा रही त्रुटि उपयोगकर्ता एजेंट से संबंधित नहीं है। जब आप किसी साइट पर नेविगेट करने के लिए इसका उपयोग करते हैं, तो डिफ़ॉल्ट रूप से robots.txt निर्देशों को स्वचालित रूप से मशीनीकृत करें। इस व्यवहार को निष्क्रिय करने के लिए .ize_handle_robots (मिथ्या) मेकेनिज्म की विधि का उपयोग करें।

निम्नलिखित के आसपास पाने का कोई तरीका है?

httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt

साइट-स्वामी (barnesandnoble.com) से संपर्क करने का एकमात्र तरीका यह है कि .. मैं एक ऐसी साइट का निर्माण कर रहा हूं जो उन्हें अधिक बिक्री लाएगी, निश्चित नहीं कि वे एक निश्चित गहराई तक पहुंच से इनकार क्यों करेंगे।

मैं Python2.6 पर मैकेनाइज और ब्यूटीसाउप का उपयोग कर रहा हूं।

आस-पास के काम की उम्मीद करना


इस की नैतिकता पर बहस किए बिना आप हेडर को संशोधित कर सकते हैं उदाहरण के लिए, Googlebot की तरह दिखने के लिए, या क्या googlebot भी अवरुद्ध है?


कुछ वास्तविक IE / FF उपयोगकर्ता-एजेंट से मेल करने के लिए अपना User-Agent शीर्ष लेख सेट करें।

यहाँ मेरा IE8 उपयोगकर्ता स्ट्रिंग है:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; AskTB5.6)

जैसा कि लगता है, आपको robots.txt को बायपास करने के लिए कम काम करना होगा, कम से कम यह लेख कहता है । इसलिए आपको फ़िल्टर को अनदेखा करने के लिए कुछ कोड निकालने पड़ सकते हैं।


यदि आप बार्न्स एंड नोबल के साथ संभावित कानूनी मुसीबत में पड़ना चाहते हैं, तो आप अपने उपयोगकर्ता एजेंट के बारे में झूठ बोलने की कोशिश कर सकते हैं (जैसे, आप एक इंसान हैं और रोबोट नहीं हैं)। इसके बजाय उनके व्यवसाय विकास विभाग के संपर्क में क्यों न हों और उन्हें विशेष रूप से अधिकृत करने के लिए मना लें? उन्हें कोई संदेह नहीं है कि उनकी साइट को रोबोट के कुछ वर्गों जैसे कि मूल्य तुलना इंजन से स्क्रैप करने से बचने की कोशिश कर रहे हैं, और यदि आप उन्हें समझा सकते हैं कि आप एक नहीं हैं, तो अनुबंध पर हस्ताक्षर करें, आदि, वे अच्छी तरह से बनाने के लिए तैयार हो सकते हैं। आपके लिए एक अपवाद।

एक "तकनीकी" वर्कअराउंड जो अभी रोबोट्स में एन्कोडेड के रूप में उनकी नीतियों को तोड़ता है। यह एक उच्च-कानूनी-जोखिम दृष्टिकोण है जिसे मैं कभी भी अनुशंसित नहीं करूंगा। BTW, उनके robots.txt कैसे पढ़ता है?


सही अनुरोध करने के लिए कोड:

br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
resp = br.open(url)
print resp.info()  # headers
print resp.read()  # content




http-status-code-403