scrapy爬虫系列:shell命令行测试模式
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
scrapy
的命令行模式,非常适合调试parse()
内的具体语句。通过这个命令行,可以实验.css
和.path
函数,是否可以返回预想中的值。
scrapy
的shell
模式,使用起来是非常的简单。本文只涉及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
日志。 - 等光标进入“>>>”等待输入状态后,就可以输入后续命令了。
使用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()
使用xpath
选择器
scrapy
使用xpath
方式,获取数据,是常见基本操作之二。
response.xpath('//title')
response.xpath('//title/text()').extract_first()
response.xpath('//title/text()')[0].extract()
连续测试模式,使用变量
在这里,也可以使用变量,交互式的调试代码。
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
里面,缩进是极其十分非常重要的。一但缩进错误,就会导致逻辑错误了。
在浏览器中查看结构体
response
这个里面,就是个缓存文件,里面保存着所有你想知道的数据。那么你请求到的html页面,是什么样的呢?使用下面的命令,可以可视化的查看。
newsn.net:这里是【评论】可见内容
退出scrapy shell
quit()
或者ctrl+z
之后,松手敲回车。或者使用大家熟悉的ctrl+c
结束进程。
总结
scrapy shell
是调试scrapy
语句的好帮手。灵活使用scrapy shell
,就可以事半功倍的书写调试scrapy
代码了。
更多scrapy
经验文章,请参见这个链接:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
学习下
看一下