我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

scrapy的命令行模式,非常适合调试parse()内的具体语句。通过这个命令行,可以实验.css.path函数,是否可以返回预想中的值。

苏南大叔:scrapy爬虫系列:shell命令行测试模式 - scrapy-shell-hero
scrapy爬虫系列:shell命令行测试模式(图7-1)

scrapyshell模式,使用起来是非常的简单。本文只涉及scrapy shell的最简单使用。还有大量高深内容,等待你的发掘。随着苏南大叔的教程,一起看看scrapy shell的基本使用方式方法吧。

scrapy shell <url>

scrapy shell起始是从这样的命令开始的:

scrapy shell <url> --nolog

以百度新闻首页为例,苏南大叔执行了如下命令,然后等待命令进入“>>>”等待输入状态即可。

scrapy shell http://news.baidu.com/ --nolog

下面是相关说明:

  • 这个<url>也可以是本地的html页面,改成路径即可。
  • 因为默认情况下,scrapy shell会输出大量无用log信息。所以,可以使用--nolog参数禁用掉无用的log日志。
  • 等光标进入“>>>”等待输入状态后,就可以输入后续命令了。

苏南大叔:scrapy爬虫系列:shell命令行测试模式 - scrapy-nolog
scrapy爬虫系列:shell命令行测试模式(图7-2)

使用css选择器

scrapy使用css方式,获取数据,是常见基本操作之一。

response.css('title')
response.css('title::text').extract()
response.css('title').extract()
response.css('title::text').extract_first()
response.css('title::text')[0].extract()

苏南大叔:scrapy爬虫系列:shell命令行测试模式 - response-css
scrapy爬虫系列:shell命令行测试模式(图7-3)

使用xpath选择器

scrapy使用xpath方式,获取数据,是常见基本操作之二。

response.xpath('//title')
response.xpath('//title/text()').extract_first()
response.xpath('//title/text()')[0].extract()

苏南大叔:scrapy爬虫系列:shell命令行测试模式 - response-xpath
scrapy爬虫系列:shell命令行测试模式(图7-4)

连续测试模式,使用变量

在这里,也可以使用变量,交互式的调试代码。

focus_news = response.css("ul.focuslistnews")[0]
focus_news
bold_item = focus_news.css(".bold-item a::text").extract_first()
bold_item 
for li in focus_news.css("li"):
     text = li.css("a::text").extract_first()
     text
     href = li.css("a::attr('href')").extract_first()
     href
     print(dict(text=text, href=href))

这个代码中,需要着重注意的就是缩进。因为在python里面,缩进是极其十分非常重要的。一但缩进错误,就会导致逻辑错误了。

苏南大叔:scrapy爬虫系列:shell命令行测试模式 - scrapy_shell_code2
scrapy爬虫系列:shell命令行测试模式(图7-5)

在浏览器中查看结构体

response这个里面,就是个缓存文件,里面保存着所有你想知道的数据。那么你请求到的html页面,是什么样的呢?使用下面的命令,可以可视化的查看。

newsn.net:这里是【评论】可见内容

苏南大叔:scrapy爬虫系列:shell命令行测试模式 - scrapy_view_response
scrapy爬虫系列:shell命令行测试模式(图7-6)

退出scrapy shell

quit()或者ctrl+z之后,松手敲回车。或者使用大家熟悉的ctrl+c结束进程。

苏南大叔:scrapy爬虫系列:shell命令行测试模式 - scrapy_shell_quit
scrapy爬虫系列:shell命令行测试模式(图7-7)

总结

scrapy shell是调试scrapy语句的好帮手。灵活使用scrapy shell,就可以事半功倍的书写调试scrapy代码了。

更多scrapy经验文章,请参见这个链接:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python    scrapy