在Scrapy項目【內外】使用scrapy shell命令抓取 某網站首頁的初步狀況

Windows 10家庭中文版,Python 3.6.3,Scrapy 1.5.0,shell

 

時隔一月,再次玩Scrapy項目,但願此次能夠玩的更進一步。服務器

本文展現使用在 Scrapy項目內、項目外scrapy shell命令抓取知乎首頁的初步狀況,重要的一點是,在項目內抓取時,沒有response可用scrapy

 

在項目【外】執行抓取命令ide

scrapy shell https://www.zhihu.com網站

 

獲得結果(部分):由於知乎的反爬蟲功能,獲得了400錯誤,訪問失敗。spa

INFO: Overridden settings: {'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter', 'LOGSTATS_INTERVAL': 0}
[]
2018-08-20 09:11:54 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2018-08-20 09:11:54 [scrapy.core.engine] INFO: Spider opened
2018-08-20 09:11:59 [scrapy.core.engine] DEBUG: Crawled (400) <GET https://www.zhihu.com> (referer: None)對象

可用對象以下圖:存在response!blog

 

在項目【內】執行抓取命令ci

scrapy shell https://www.zhihu.comit

注意,項目使用scrapy startproject命令建立,已經在其settings.py中添加了USER_AGENT配置項。

 

獲得結果(部分):多了不少內容,還包括USER_AGENT設置。最後服務器返回200,表示頁面訪問成功。

INFO: Overridden settings: {'BOT_NAME': 'newssci', 'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter', 'LOGSTATS_INTERVAL': 0, 'NEWSPIDER_MODULE': 'newssci.spiders', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['newssci.spiders'], 'USER_AGENT': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36-480'}

[]
2018-08-20 09:12:23 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2018-08-20 09:12:23 [scrapy.core.engine] INFO: Spider opened
2018-08-20 09:12:24 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.zhihu.com/robots.txt> (referer: None)
2018-08-20 09:12:24 [scrapy.downloadermiddlewares.robotstxt] DEBUG: Forbidden by robots.txt: <GET https://www.zhihu.com>

可用對象以下圖:沒有response對象!還少了spider對象!

沒有response對象,感受什麼也作不了了,網頁也沒法分析了。

 

總結

看來,仍是須要到 項目外 使用scrapy shell命令來對網頁作分析纔是。不過,對於這種反爬蟲的網站,在命令中添加上USER_AGENT配置項,而後就能夠用response來作分析了。

項目外添加USER_AGENT配置項的命令以下:-s

scrapy shell -s USER_AGENT="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36-480" https://www.zhihu.com

 

結果以下:發生了一次重定向,因此有302。

INFO: Overridden settings: {'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter', 'LOGSTATS_INTERVAL': 0, 'USER_AGENT': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36-480'}

[scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (302) to <GET https://www.zhihu.com/signup?next=%2F> from <GET https://www.zhihu.com>

[scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.zhihu.com/signup?next=%2F> (referer: None)

 

發現了response對象可用:指明是針對其後的那個200網址的

[s]   response   <200 https://www.zhihu.com/signup?next=%2F>

 

使用response對象:獲取頁面title成功!

>>> response.xpath('//title/text()')
[<Selector xpath='//title/text()' data='知乎 - 發現更大的世界'>]

相關文章
相關標籤/搜索