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

想爬取hao123上的所有网站,有没有好的方法?

  •  
  •   kenneth · 2012-12-14 14:51:11 +08:00 · 7925 次点击
    这是一个创建于 4361 天前的主题,其中的信息可能已经有所发展或是发生改变。
    求方法,求思路。
    需要抓取全,只要hao123网站上的,不要爬出去了。
    29 条回复    1970-01-01 08:00:00 +08:00
    wang2191195
        1
    wang2191195  
       2012-12-14 14:52:04 +08:00
    scrapy 你值得拥有
    enj0y
        2
    enj0y  
       2012-12-14 14:52:54 +08:00
    使用云的理念,用访客的资源来爬行,节约服务器资源。。
    哈哈,估计这样的网站没有人敢访问。
    kenneth
        3
    kenneth  
    OP
       2012-12-14 14:56:01 +08:00
    @enj0y 求实现
    @wang2191195 scrapy必须扩展basespider, 我没抓成功。求代码
    flyingkid
        4
    flyingkid  
       2012-12-14 15:15:59 +08:00
    设置一个规则 http://*.hao123.com/*

    其他的全部调过。
    kenneth
        5
    kenneth  
    OP
       2012-12-14 15:19:25 +08:00
    @flyingkid 我要抓全站的域名,当然不能控制域。scrapy链接提取的时候,只要有链接,我就要去匹配,所以我补知道如何处理这块。
    zuroc
        6
    zuroc  
       2012-12-14 15:22:12 +08:00
    momou
        8
    momou  
       2012-12-14 17:16:32 +08:00
    kenneth
        9
    kenneth  
    OP
       2012-12-14 17:29:44 +08:00
    @momou 问题是抓下来,我们还要处理下,最后还要到数据库去,所以工具是不够的。
    tioover
        10
    tioover  
       2012-12-14 18:33:36 +08:00
    curl拉下来
    然后找出所有<a>
    dreampuf
        11
    dreampuf  
       2012-12-14 20:52:43 +08:00
    wget -e robots=off -r -T 3 --domains=hao123.com www.hao123.com
    for i in `find . -iname *.html`; do cat $i | grep "http:" | sed 's/^.*http/http/' | cut -d'"' -f1 | sort -u;done
    greatghoul
        12
    greatghoul  
       2012-12-14 21:06:59 +08:00
    wget 就搞定了。
    glsee
        13
    glsee  
       2012-12-14 22:41:03 +08:00
    barbery
        14
    barbery  
       2012-12-15 10:02:08 +08:00
    右键网页另存为。。。。用正则提取。。。。
    im924106179
        15
    im924106179  
       2012-12-15 15:55:22 +08:00
    100rmb包搞定
    kenneth
        16
    kenneth  
    OP
       2012-12-15 17:10:58 +08:00
    @im924106179 你能搞定就上代码,100rmb我付你。
    xjay
        17
    xjay  
       2012-12-16 14:11:25 +08:00
    scrapy 你值得拥有,呵呵。
    用CrawlSpider,写好rules规则,然后在parse_item里面就可以处理你要的数据了,再实现一个pipeline数据管道,把你要的数据保存起来,就ok了。
    ccdjh
        18
    ccdjh  
       2012-12-16 15:32:39 +08:00
    爬取应该不行,你写个爬虫,总有你控制不住,或者没有那么智能。
    你还不如写一个按页抓取的。就是你输入http://www.hao123.com/hardware

    把http://www.hao123.com/hardware上的站提取出来,并且转json就好了。没必要钻胡同
    xieranmaya
        19
    xieranmaya  
       2012-12-17 19:03:08 +08:00
    这样行不行,用jQuery
    $("a").each(function(){
    $("<div></div>").load(this.href).appendTo(document.body);
    });
    ADIVILOrz
        20
    ADIVILOrz  
       2012-12-18 23:25:07 +08:00
    @kenneth 所有网站指的是?
    1. 推荐的网站域名吗,
    2. 还是包括外链所在的网站?
    3. 包含推荐的影片、图片链接地址所在的网站吗
    kenneth
        21
    kenneth  
    OP
       2012-12-18 23:35:26 +08:00
    @ADIVILOrz
    只要hao123出现的链接,如果这个链接出去了,不继续爬。
    我是想首先匹配链接,从所有链接中,取出域名。
    链接的只要hao123出现的,就是不要爬出去了。
    bigdude
        22
    bigdude  
       2012-12-19 13:59:49 +08:00
    wget 啊
    IFoon
        23
    IFoon  
       2012-12-19 16:19:25 +08:00
    用采集工具啊。。
    www.sensite.cn
    adyizhan
        24
    adyizhan  
       2012-12-19 23:16:35 +08:00
    @im924106179 怎么联系。
    ADIVILOrz
        25
    ADIVILOrz  
       2012-12-19 23:28:46 +08:00
    @kenneth

    1. wget爬
    2. 用grep提取网址

    我把shell脚本和结果发在了 https://github.com/leeleilei/spideHao123
    kenneth
        26
    kenneth  
    OP
       2012-12-20 09:57:31 +08:00
    @ADIVILOrz 谢谢,我一会实践下,入库的话,能否通过shell搞定?因为我不懂直接用shell
    ADIVILOrz
        27
    ADIVILOrz  
       2012-12-20 21:00:38 +08:00
    @kenneth 看你入什么库,什么表结构。sqlite3,postgresql,mysql都有CLI工具,shell可以直接调用导入文本。
    secretworry
        28
    secretworry  
       2012-12-20 21:06:22 +08:00
    @kenneth echo "YOUR_SQL_HERE" | $MYSQL 就能输入数据库了。
    其中MYSQL="mysql -u"(YOUR MYSQL ACCESS COMMAND)
    aksoft
        29
    aksoft  
       2012-12-21 22:25:35 +08:00
    都是NB人,学习下..
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   944 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:40 · PVG 04:40 · LAX 12:40 · JFK 15:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.