मैं पुराने reddit को स्क्रैप करने का प्रयास कर रहा हूं लेकिन हर बार मुझे यह त्रुटि मिलती है:

>>> response.css('div')

Traceback (most recent call last):

File "<console>", line 1, in <module>

AttributeError: 'NoneType' object has no attribute 'css'

क्या मैं कुछ गलत कर रहा हूँ या आप पुराने रेडिट को परिमार्जन नहीं कर सकते?

यह लॉग है:

[scrapy.core.engine] DEBUG: Crawled (200) <GET https://old.reddit.com/robots.txt> (referer: None)
2020-11-02 14:56:09 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (301) to <GET https://old.reddit.com/> from <GET http://old.reddit.com>
2020-11-02 14:56:09 [scrapy.downloadermiddlewares.robotstxt] DEBUG: Forbidden by robots.txt: <GET https://old.reddit.com/>
0
Samar Shrestha 2 नवम्बर 2020, 11:45

2 जवाब

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

आपको यह त्रुटि इसलिए मिल रही है क्योंकि आपको एक खाली प्रतिक्रिया (None) प्राप्त हुई है। तो आप एक खाली चर में .css() विधि को कॉल करने का प्रयास कर रहे हैं। आपको अपेक्षित प्रतिक्रिया वस्तु नहीं बल्कि None प्राप्त होने का कारण यह है कि आपके स्पाइडर ने अनुरोध को फ़िल्टर कर दिया

आप अपने निष्पादन लॉग की इस पंक्ति में देख सकते हैं:

2020-11-02 14:56:09 [scrapy.downloadermiddlewares.robotstxt] DEBUG: Forbidden by robots.txt: <GET https://old.reddit.com/>

साइट के robots.txt द्वारा अनुरोधित URL की अनुमति नहीं है। आप अपने स्पाइडर के settings.py को लाइन ROBOTSTXT_OBEY में बदलकर इस फ़िल्टर को अक्षम कर सकते हैं। इसे अक्षम करने के लिए उपयोग करें:

ROBOTSTXT_OBEY = False

इससे आपका स्पाइडर सभी अनुरोधों के लिए robots.txt को अनदेखा कर देगा। (और पढ़ें)

हालाँकि, robots.txt नियमों का सम्मान करना वेबस्क्रैपिंग में एक अच्छा अभ्यास (यहां तक ​​कि नैतिक भी कह सकता है) माना जाता है। robots.txt मानक यहां के बारे में अधिक जानकारी।

1
renatodvc 2 नवम्बर 2020, 19:23

यहाँ मेरा स्क्रैपी शेल आउटपुट है, आशा है कि यह मदद करेगा।

(scrapy_env) rana@rana-desktop:~/Documents/allproject/scrapy_projt/tutorial$
$ scrapy shell https://old.reddit.com/

In [2]: response.status
Out[2]: 200

In [3]: response.css('div')
Out[3]: 
[<Selector xpath='descendant-or-self::div' data='<div class="GoogleAd HomeAds InArticl...'>,
 <Selector xpath='descendant-or-self::div' data='<div id="header" role="banner"><a tab...'>,
 <Selector xpath='descendant-or-self::div' data='<div id="sr-header-area"><div class="...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="width-clip"><div class="d...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="dropdown srdrop" onclick=...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="drop-choices srdrop"><a h...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="sr-list"><ul class="flat-...'>,
 <Selector xpath='descendant-or-self::div' data='<div id="header-bottom-left"><a href=...'>,
 <Selector xpath='descendant-or-self::div' data='<div id="header-bottom-right"><span c...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="side"><div class="spacer"...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="spacer"><form action="htt...'>,
 <Selector xpath='descendant-or-self::div' data='<div id="searchexpando" class="infoba...'>,
 <Selector xpath='descendant-or-self::div' data='<div id="moresearchinfo"><p>use the f...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="spacer"><form method="pos...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="g-recaptcha" data-sitekey...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="status"></div>'>,
 <Selector xpath='descendant-or-self::div' data='<div id="remember-me"><input type="ch...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="submit"><span class="thro...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="clear"></div>'>,
 <Selector xpath='descendant-or-self::div' data='<div class="spacer"><div class="sideb...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="sidebox submit submit-lin...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="morelink"><a href="https:...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="nub"></div>'>,
 <Selector xpath='descendant-or-self::div' data='<div class="spacer"><div class="sideb...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="sidebox submit submit-tex...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="morelink"><a href="https:...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="nub"></div>'>,
 <Selector xpath='descendant-or-self::div' data='<div class="spacer"><a href="/premium...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="premium-banner__logo"></div>'>,
 <Selector xpath='descendant-or-self::div' data='<div class="premium-banner__title">Ge...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="content" role="main"><sec...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="listingsignupbar__cta-con...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="spacer"><style type="text...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="happening-now-wrap"><div ...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="happening-now"><div><p cl...'>,
 <Selector xpath='descendant-or-self::div' data='<div><p class="icon"><img src="//www....'>,
 <Selector xpath='descendant-or-self::div' data='<div class="close-button">x</div>'>,
 <Selector xpath='descendant-or-self::div' data='<div class="spacer"><style>body >.con...'>,
 <Selector xpath='descendant-or-self::div' data='<div id="siteTable" class="sitetable ...'>,
 <Selector xpath='descendant-or-self::div' data='<div class=" thing id-t3_jmlqpj odd  ...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="midcol unvoted"><div clas...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="arrow up login-required a...'>,

 <Selector xpath='descendant-or-self::div' data='<div class="clearleft"></div>'>,
 <Selector xpath='descendant-or-self::div' data='<div class="nav-buttons"><span class=...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="footer-parent"><div by-ze...'>,
 <Selector xpath='descendant-or-self::div' data='<div by-zero class="footer rounded"><...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="col"><ul class="flat-vert...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="col"><ul class="flat-vert...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="col"><ul class="flat-vert...'>,
 <Selector xpath='descendant-or-self::div' data='<div class="col"><ul class="flat-vert...'>]
0
Samsul Islam 2 नवम्बर 2020, 17:38