推荐学习书目
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
hcwhan
V2EX  ›  Python

新手请教两个问题 限时输入和实时暂停

  •  
  •   hcwhan · Sep 28, 2015 · 3072 views
    This topic created in 3931 days ago, the information mentioned may be changed or developed.
    刚看 python,在试着写爬虫,遇到两个问题请教下大家,谢谢了(python 3.5.0 64bit)

    1. 在获取用户输入时,设定一个时间,
    限时内,有输入为输入
    无输入则设定输入为一个默认值

    2.在一个下载 for 循环中,如何做到在 cmd 运行中想暂停就可以暂停
    谢谢
    21 replies    2015-09-30 11:03:28 +08:00
    hcwhan
        1
    hcwhan  
    OP
       Sep 28, 2015
    我想的第二个问题解决办法就是 设定一个很短时间的 1 所用的获取输入
    iwannaflytomoon
        2
    iwannaflytomoon  
       Sep 28, 2015
    1) while True: , 内部计时, 有输入或者到时间后 break
    2) 发信号
    hcwhan
        3
    hcwhan  
    OP
       Sep 28, 2015
    @iwannaflytomoon
    1)输入函数不是会暂停函数,如何实现计时?
    hcwhan
        4
    hcwhan  
    OP
       Sep 28, 2015
    @iwannaflytomoon
    2)发信号 不懂什么意思啊 哭了 能说一下是那个函数吗?
    iwannaflytomoon
        6
    iwannaflytomoon  
       Sep 28, 2015
    @hcwhan
    1) 其实我不太明白你第一个需求是什么意思,一个 spider 为啥需要用户输入?
    2) linux 的信号, 在 python 中 import signal, 不懂可以 google 一下
    hcwhan
        7
    hcwhan  
    OP
       Sep 28, 2015
    @iwannaflytomoon
    1)是用来确认是否对失败列表进行重试的,默认 2s 无输入重试
    2)谢谢
    hcwhan
        8
    hcwhan  
    OP
       Sep 28, 2015
    @MrGba2z 是这个 非常感谢
    iwannaflytomoon
        9
    iwannaflytomoon  
       Sep 28, 2015
    @hcwhan
    这种一般用配置文件就 ok 了, 或者你打个日志, 失败的可以来爬第二遍

    spider 一般都是多线程来抓取的, 一般不会设计成人机交互式的⊙﹏⊙b 汗
    cdxem713
        10
    cdxem713  
       Sep 29, 2015
    @hcwhan 额,你这个需求岂不是需要有个人实时监控这个爬虫了,而且还是不能开小差那种
    爬虫尽量做到自动化,不要过多的交互,@lwannaflytomoon 已经提到重试和 Log 。这种方式才是正常的。
    cdxem713
        11
    cdxem713  
       Sep 29, 2015
    @hcwhan 第二个需求可以通过将爬虫队列持久化实现,每次重启爬虫后检查一下之前存储的队列
    hcwhan
        12
    hcwhan  
    OP
       Sep 30, 2015
    @cdxem713 额 就是为了实现自动化 是默认重试的 想失败次数过多后给一个选择中断继续
    用多线程来做的
    hcwhan
        13
    hcwhan  
    OP
       Sep 30, 2015
    @cdxem713 现在写的是每次下载一个文件 用多线程下载这个文件
    准备改成多线程同时下载几个文件 每个文件同时用多线程下载
    hcwhan
        14
    hcwhan  
    OP
       Sep 30, 2015
    @cdxem713 问题是感觉多线程同时下载几个文件 log 就会有点混乱
    cdxem713
        15
    cdxem713  
       Sep 30, 2015
    @hcwhan 类似于下载器?多线程下载文件么?
    hcwhan
        16
    hcwhan  
    OP
       Sep 30, 2015
    cdxem713
        17
    cdxem713  
       Sep 30, 2015
    @hcwhan 可否用现成的下载器进行下载呢?爬虫专注做链接发现,程序复杂度可能会低一些。
    hcwhan
        18
    hcwhan  
    OP
       Sep 30, 2015
    @cdxem713 恩 小白 就用的 python3.5.0 自带 urllib
    hcwhan
        19
    hcwhan  
    OP
       Sep 30, 2015
    @cdxem713 只知道标准库 有什么网络方面的库值得推荐?
    cdxem713
        20
    cdxem713  
       Sep 30, 2015
    @hcwhan github 上面找一下?我也没学几天 Python 。
    我是觉得在爬虫里面还有实现多线程下载太复杂了,你单独开发多线程下载,用参数传进去启动都会好一些,而且调试也方便。
    hcwhan
        21
    hcwhan  
    OP
       Sep 30, 2015
    @cdxem713 恩 就是把多线程下载封装到一个函数里的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   866 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 20:25 · PVG 04:25 · LAX 13:25 · JFK 16:25
    ♥ Do have faith in what you're doing.