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
Registering
V2EX  ›  Python

准备练手写一个爬虫,问问老司机

  •  
  •   Registering · 2015-04-16 15:42:47 +08:00 · 4204 次点击
    这是一个创建于 3500 天前的主题,其中的信息可能已经有所发展或是发生改变。
    近两周下班翻看了一下基本语法,队列,字典,条件,网络,文件等等语法有了个大概了解了,,,

    想写个爬虫试试:爬知乎票数最高的十个回答

    以我现在关于爬虫知道的有限知识,准备这样做(有错则望轻喷)

    找李开复爷爷的大V号开始,

    检索其回答过的问题的票数,记录
    然后遍历关注他的用户
    继续检索其中一个开复爷爷的粉丝回答的问题的票数,记录
    ,,,
    ,,,


    上面这个过程应该涉及到广度深度搜索,,用递归的方式估计分分钟就内存溢出了,所以需要用一个队列维护起来。如果数据太多,也许得保存到数据库。

    解析HTML准备直接用HTMLParser或者Beautiful Soup。


    那么问题来了,,,我这个爬虫爬到什么时候告诉自己结束,难不成让它爬几个月爬遍整个知乎?,


    这个过程不涉及登陆,所以基本主要问题是算法的设计,以及HTML的解析。


    ------------------------
    希望老司机告诉我这个思路有没有错
    以及,如果你来写,你会怎么实现这个爬虫,
    18 条回复    2015-12-04 15:44:24 +08:00
    messense
        1
    messense  
       2015-04-16 15:48:11 +08:00
    messense
        2
    messense  
       2015-04-16 15:49:44 +08:00
    Daniel65536
        3
    Daniel65536  
       2015-04-16 15:50:45 +08:00 via iPad
    思路偏了。

    直接读取这个网页就行了:
    http://www.zhihu.com/topic/19776749/top-answers

    1.知乎-话题-精华 会按照投票数量排序某话题/子话题下的最高票答案
    2.知乎-根话题 是所有话题的母话题

    所以直接检查根话题精华就能得到票数最高的答案了。
    ioven
        4
    ioven  
       2015-04-16 15:50:57 +08:00
    把知乎用户名入库,直到抓取抓取不到新的用户名为止。
    binux
        5
    binux  
       2015-04-16 15:51:13 +08:00
    Daniel65536
        6
    Daniel65536  
       2015-04-16 15:59:04 +08:00 via iPad   ❤️ 1
    经验:写爬虫前一定要多花时间分析目标网站,分析用多一分钟顶你爬多一天。

    你这个具体问题上爬虫爬一个月还不如我直接读取网页花一秒。

    经验2:多花时间分析流量有效性比。

    为什么要去读取html?如果有RESTful api读json的效率是不是高更多?
    充满层级/样式/脚本的html中有价值的数据的比例占总数据量的多少?有没有20%?
    json有效数据比例可以高达70%,同样网速爬取速度就能快3-5倍,还不用考虑html的解析问题。

    #一点爬数据的人生经验
    Registering
        7
    Registering  
    OP
       2015-04-16 16:17:43 +08:00
    @Daniel65536 好吧,,,感觉这个爬虫已经没有或者的意义了,,,,我这就把它生吞了,,,
    whatisnew
        8
    whatisnew  
       2015-04-16 16:19:13 +08:00
    @messense 西瓜皮分析html用的是什么方法?dom?正则?
    messense
        9
    messense  
       2015-04-16 16:22:40 +08:00
    frankzeng
        10
    frankzeng  
       2015-04-16 16:33:50 +08:00
    木有任何意义,因为知乎已经提供了。
    可以换个项目,爬一下豆瓣的评分最高的前1000个电影,包括他们的详细信息,放到自己数据库,再做个页面优雅展示出来。
    Registering
        11
    Registering  
    OP
       2015-04-16 16:35:23 +08:00
    @frankzeng
    恩恩,好久没上知乎了,刚才才知道现在知乎的根话题下有列出票数排名,,,
    kingname
        12
    kingname  
       2015-04-16 17:00:49 +08:00   ❤️ 2
    xpath大法好,Beautiful Soup是垃圾。
    em70
        13
    em70  
       2015-04-16 17:32:46 +08:00 via Android
    你自己去做出来看看啊,还没做先问行不行,你这是学习吗
    whatisnew
        14
    whatisnew  
       2015-04-16 17:38:41 +08:00
    有没有什么办法让 python 每一次都不要动态编译。。。像 c/cpp 或者 java 那样编译好再运行。
    动态编译真是硬伤
    withrock
        15
    withrock  
       2015-04-16 18:03:31 +08:00
    jarlyyn
        16
    jarlyyn  
       2015-04-16 18:17:44 +08:00
    @whatisnew

    python不是有pyc么?
    MeiganFang
        17
    MeiganFang  
       2015-04-17 21:50:59 +08:00
    @jarlyyn lz应该还是入门级的
    twc731
        18
    twc731  
       2015-12-04 15:44:24 +08:00
    @binux 您好, http://demo.pyspider.org/网站的在线 JSON 怎么打不开了,打开来是空白的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1179 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 23:00 · PVG 07:00 · LAX 15:00 · JFK 18:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.