V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
akmonde
V2EX  ›  Python

关于 scrapy 的 allowed_domains 失效问题

  •  
  •   akmonde · 2017-08-25 09:57:40 +08:00 · 3157 次点击
    这是一个创建于 2649 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT,我这边爬虫类继承的是基础 spider:

    from scrapy.spiders import Spider
    
    class DSpider(Spider):
    

    然后也设置了:

    allowed_domains=["baidu.com"]
    

    结果发现,爬虫仍然会递归爬到其他网站上的链接,我这边肯定不是链接跳转过去的,是直接爬到其他网站了。 网上找了下原因,说我得去启用 OffsiteMiddleware,当然具体怎么设置值没找到。

    class scrapy.contrib.spidermiddleware.offsite.OffsiteMiddleware
    

    然后我看了下,我自己胡乱加了下配置:

    SPIDER_MIDDLEWARES = {
        'DomainSpider.middlewares.MyCustomSpiderMiddleware': 543,
        'scrapy.contrib.spidermiddleware.offsite.OffsiteMiddleware': None,
    }
    

    结果报错:

    exceptions.ImportError: No module named middlewares
    

    似乎启用这个,我还得去建一个 middlewares.py ,然后往里面填充一些不必要的配置。 感觉这样很麻烦,不知道我是否走错弯路了,还请大佬们指点一下~ 非常感激!!!

    3 条回复    2017-08-26 10:04:54 +08:00
    Yc1992
        1
    Yc1992  
       2017-08-25 10:11:35 +08:00
    看文档,你这个填 None 就是不启用啊,貌似类的导入位置也不对
    akmonde
        2
    akmonde  
    OP
       2017-08-25 10:25:09 +08:00
    @Yc1992
    SPIDER_MIDDLEWARES = 那行写在了 setting 里面,我这儿没有引入 middlewares 是没有生效的,不知道 allowed_domains 需要在啥时候生效,我看别人的好像也没提要加 middlewares。
    akmonde
        3
    akmonde  
    OP
       2017-08-26 10:04:54 +08:00
    真的没有大佬能解答一下? so 尴尬。。我后来以为是版本原因,升级了 scrapy 还是这样,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1141 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:54 · PVG 02:54 · LAX 10:54 · JFK 13:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.