Python:Scrapy(四) 命令行相关
这一部分是对官方文档的学习,主要是理解翻译,来对之前的应用部分进行详细的理论补充。
1、保存爬取到的要素的方式:
①运行scrapy指令时,添加参数-o、-O;(大小写字母o而不是数字)
②写Pipelines.py进行更详细的要素输出;
2、爬虫调试
①运行调试控制器:
scrapy shell URL --nolog
比如
scrapy shell 'https://scrapy.org' --nolog
运行该项即可向URL发送请求;控制器运行成功后,每行会以 [n] 为前缀,--nolog:不打印日志
②部分可用项
[s] Available Scrapy objects: [s] scrapy scrapy module (contains scrapy.Request, scrapy.Selector, etc) [s] crawler <scrapy.crawler.Crawler object at 0x7f07395dd690> [s] item {} [s] request <GET https://scrapy.org> [s] response <200 https://scrapy.org/> [s] settings <scrapy.settings.Settings object at 0x7f07395dd710> [s] spider <DefaultSpider 'default' at 0x7f0735891690> [s] Useful shortcuts: [s] fetch(url[, redirect=True]) Fetch URL and update local objects (by default, redirects are followed) [s] fetch(req) Fetch a scrapy.Request and update local objects [s] shelp() Shell help (print this help) [s] view(response) View response in a browser
其中response直接就是返回的源代码,可以从中用各种语法提取想要的内容,比如
response.xpath('XPath路径表达式')#根据xpath语法,提取要素 response.headers#文件头
response.xpath('//title/text()').get()
至于response的属性和方法,可以看Scrapy(一)或Scrapy(五)
③如果想在程序某处中断,并检查Response的正确性,可以用scrapy.shell.inspect_response(response , self)
比如程序中的start_urls有多个URL,可以检查它们的Response,在parse函数中进行:
import scrapy class XXXSpider(scrapy.Spider): name='xxx' start_urls=[url1,url2,url3] def parse(self,response): #当我们想检查其中的某个URL时 if '.org' in response.url:#比如检查某个包含 .org的网址response from scrapy.shell import inspect_response inspect_response(response,self)
用CTRL+Z退出检查,退出检查后的爬虫程序仍会继续运行
④退出整个Shell
输入exit();
或者 CTRL+Z
3、爬虫命令行,指令查看
Command line tool-Scrapy documentation
在命令行中,进入某个工程文件下,输入scrapy(注意必须在进入某个爬虫工程下再输入scrapy),就可以看到所有可用的爬虫指令
如果要查看某个指令使用时的具体用法,可以通过在命令行输入scrapy 指令 -h的方式
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性