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

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

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

使用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

使用xpath选择器

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

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

scrapy爬虫系列:shell命令行测试模式 - response-xpath

连续测试模式,使用变量

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

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

在浏览器中查看结构体

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

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

scrapy爬虫系列:shell命令行测试模式 - scrapy_view_response

退出scrapy shell

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

scrapy爬虫系列:shell命令行测试模式 - scrapy_shell_quit

总结

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

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

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。