2023年12月9日发(作者:ebao)
(一)Scrapy的命令行
最近一直都是在用自己写的抓取框架做爬虫,还是系统的整理一下Scrapy相关的知识,做一个old school 的爬虫。
爬虫的整个流程,就是发送网络请求,处理返回的内容两个过程。然后我们将这个流程细化;如何准备需要访问的链接,需要访问的链接应
该是哪些链接;发送请求时我们带上什么,如何更快的发送更多请求;对返回的内容需要做哪些操作……
启动部分:
从我记忆里Scrapy的启动方式一步步来看,首先看scrapy的命令行是怎么运行起来的。和两个文件。
从commands文件夹中导入,commands文件夹下的就是常见的各种命令,描述着当我们在命令行下调用这些命令时会发生
什么。文件里是所以命令的基类ScrapyCommand。而这一些都是通过中来执行的,当我们最开始下载完Scrapy后在命
令行输入scrapy时。
我们可以从命令行里看到上面的结果,而这一切都是在中进行操作的。当运行时,会调用execute方法。
(1)当不带参数或带上了错误参数
execute方法最开始会获取最近的项目配置并加载,因为我此前并不在某个项目下,所以输出no active project。(图中inproject是一个
bool值,在中寻找文件,如果不存在则往上一级查找,查看现在是否在某个项目下。)
cmds是对commands文件夹下的各个命令进行加载,cmdname是对当前参数中的命令进行验证。
当不带任何参数的时候,调用_print_commands方法。方法里的代码是不是似曾相识,就是我们直接在命令行输入scrapy显示的内容。
def _print_commands(ttings, inproject):
_print_header(ttings, inproject)
print("Usage:")
print(" scrapy
print("Available commands:")
cmds = _get_commands_dict(ttings, inproject)
for cmdname, cmdclass in sorted(()):
print(" %-13s %s" % (cmdname, _desc()))
if not inproject:
print()
print(" [ more ] More commands available when run from project directory")
print()
print('U "scrapy
(2)当带上正确参数
cmds中已经获取cmd对象,根据传入的参数获取对应的cmd对象。注意的是两个_run_print_help方法;第一个是执行cmd的
process_options方法,对cmd对象的tting进行一些初始化的设置(如log文件位置,等级的一些设置);设置好之后给cmd设置
crawler_process对象。第二个是_run_command方法,通过传入的cmd执行对应的run方法。
本文发布于:2023-12-09 21:18:19,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1702127899241122.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:(一)Scrapy的命令行.doc
本文 PDF 下载地址:(一)Scrapy的命令行.pdf
留言与评论(共有 0 条评论) |