python - 针对本地文件的 Scrapy shell

标签 python shell web-scraping scrapy scrapy-shell

在 Scrapy 1.0 之前,我可以非常简单地针对本地文件运行 Scrapy Shell:

$ scrapy shell index.html

升级到1.0.3后开始报错:

$ scrapy shell index.html
2015-10-12 15:32:59 [scrapy] INFO: Scrapy 1.0.3 started (bot: scrapybot)
2015-10-12 15:32:59 [scrapy] INFO: Optional features available: ssl, http11, boto
2015-10-12 15:32:59 [scrapy] INFO: Overridden settings: {'LOGSTATS_INTERVAL': 0}
Traceback (most recent call last):
  File "/Users/user/.virtualenvs/so/bin/scrapy", line 11, in <module>
    sys.exit(execute())
  File "/Users/user/.virtualenvs/so/lib/python2.7/site-packages/scrapy/cmdline.py", line 143, in execute
    _run_print_help(parser, _run_command, cmd, args, opts)
  File "/Users/user/.virtualenvs/so/lib/python2.7/site-packages/scrapy/cmdline.py", line 89, in _run_print_help
    func(*a, **kw)
  File "/Users/user/.virtualenvs/so/lib/python2.7/site-packages/scrapy/cmdline.py", line 150, in _run_command
    cmd.run(args, opts)
  File "/Users/user/.virtualenvs/so/lib/python2.7/site-packages/scrapy/commands/shell.py", line 50, in run
    spidercls = spidercls_for_request(spider_loader, Request(url),
  File "/Users/user/.virtualenvs/so/lib/python2.7/site-packages/scrapy/http/request/__init__.py", line 24, in __init__
    self._set_url(url)
  File "/Users/user/.virtualenvs/so/lib/python2.7/site-packages/scrapy/http/request/__init__.py", line 59, in _set_url
    raise ValueError('Missing scheme in request url: %s' % self._url)
ValueError: Missing scheme in request url: index.html 

这种行为是故意的还是 Scrapy Shell 中的错误?


作为解决方法,我可以在"file"URL 方案中使用文件的绝对路径:

$ scrapy shell file:////absolute/path/to/index.html

这显然不太方便和容易。

最佳答案

更新:对于 Scrapy >=1.1,这是内置功能,您可以:

scrapy shell file:///path/to/file.html

旧答案:

根据 Running scrapy shell against a local file 中的讨论, 相关变化由 this commit 介绍.有一个 Pull Request针对这个问题创建了让 Scrapy shell 再次打开本地文件,并且计划成为 Scrapy 1.1 的一部分。

关于python - 针对本地文件的 Scrapy shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33088877/

相关文章:

python - 组合时间序列中的相似信号

shell - 是否可以将环境变量设置为 cmd.exe 中的命令输出

linux - 循环遍历多个文件夹以执行命令,然后写入另一个目录中的文件

javascript - 使用 BS4 python 单击并抓取 aspx 页面

r - 如何使用 R 登录社交网络

python - 如何抓取单元格值具有相同类名的网站表格?

python - 使用sqlalchemy从postgis数据库获取经度和纬度

python - 在 ubuntu 中更新现有 virtualenv 中的 python 版本

python - 如何在 GtkTreeView 小部件中列出目录层次结构?

shell - 你如何移动文件而不是 hdfs 中的目录?