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

想利用爬虫( python 3)登录 Q Q 空间爬些东西,有没有好的方法模拟浏览器登录 QQ 空间

  •  
  •   lyning · 2015-11-03 18:56:56 +08:00 · 10541 次点击
    这是一个创建于 3303 天前的主题,其中的信息可能已经有所发展或是发生改变。

    玩爬虫第二天,所以很多还不太懂,本来想用爬虫批量爬 QQ 空间用户头像、昵称、还有对应发表过的说说图片,什么都不懂,网上查了一下资料,发现流程大概是:获取页面 html —>正则匹配—>保存下载想要的信息。
    然后就写了一个简单的代码测试一下能不能拿到主页的个人图片:

    !/usr/bin/dev python3

    -- coding:utf-8 --

    import urllib.request
    import re
    import os

    def find_imgs(page_url):
    pattern = r'<img .? src="( http://(\w+.)+\w+\/.?)"'
    html = url_open(page_url).decode('UTF-8')
    print(html) # 这里打印出来才知道原来还没登录
    img_addrs = re.findall(pattern,html)
    print(img_addrs) # 一直都没东西
    return img_addrs

    def save_imgs(addrs):
    # 循环保存就不写了

    def download():
    os.mkdir('image') #新建文件夹
    currentpath = os.getcwd() #获取当前工作目录
    url = 'http://user.qzone.qq.com/'
    img_addrs = find_imgs(url) #获取图片地址
    save_imgs(img_addrs) #保存图片
    if __name
    _ == 'main':

    download();

    结果发现爬虫得先登录 QQ ,网上都是爬知乎、豆瓣、 V2EX 、淘宝....居多,希望给个例子参考或者推荐一些学习资源

    34 条回复    2015-11-06 06:37:12 +08:00
    Victor215
        1
    Victor215  
       2015-11-03 19:00:12 +08:00 via Android
    qq 空间很难爬, over
    bdbai
        2
    bdbai  
       2015-11-03 19:00:45 +08:00 via iPhone
    去问问 Linux 吧的 @guanrenfu
    crab
        3
    crab  
       2015-11-03 19:02:03 +08:00
    lyning
        4
    lyning  
    OP
       2015-11-03 19:02:12 +08:00
    @Victor215 那更想去爬爬看,现在卡在登录这里,死死地
    SCaffrey
        5
    SCaffrey  
       2015-11-03 19:04:57 +08:00
    lyning
        6
    lyning  
    OP
       2015-11-03 19:09:50 +08:00
    @crab 页面显示:该网站拒绝访问
    ChoateYao
        7
    ChoateYao  
       2015-11-03 19:11:27 +08:00
    手机 QQ 空间,我只能帮你这么多了。
    uuspider
        8
    uuspider  
       2015-11-03 19:20:42 +08:00
    这是个“模拟登陆”的问题,可能涉及 cookies ,代理, User Agent ,表单,甚至 RSA 。。。

    一点一点分析吧。
    SparkMan
        9
    SparkMan  
       2015-11-03 19:22:50 +08:00
    qq 空间难度太大,建议你先爬淘宝,你几十个线程也不至于被封,也不至于把他爬挂了。小网站你多玩几次就把他玩死了
    lyning
        10
    lyning  
    OP
       2015-11-03 19:26:38 +08:00
    @SparkMan 难度大是大在哪里呢?
    7z7
        11
    7z7  
       2015-11-03 19:28:41 +08:00
    QQ 空间模拟登录算简单了, get 方式的,只有一个密码算法。返回的 cookie 就可以用于爬虫用了。
    Victor215
        12
    Victor215  
       2015-11-03 19:29:58 +08:00 via Android
    难度大 第一 登录 第二 动态 第三 html 不规范 第四 反爬虫 第五 ……
    lyning
        13
    lyning  
    OP
       2015-11-03 19:59:10 +08:00
    @SparkMan 哈哈哈,原来爬虫那么厉害,小网站玩几下就死了
    lyning
        14
    lyning  
    OP
       2015-11-03 20:01:08 +08:00
    @Victor215 原来是这样,应该有办法伪装爬虫的性质吧,让浏览器认为那不是爬虫
    magicfingers
        15
    magicfingers  
       2015-11-03 20:24:55 +08:00
    你可以试试 import.io
    w88975
        16
    w88975  
       2015-11-03 20:25:18 +08:00
    之前有写过 QQ 的刷票器,利用的就是 QQ 空间的登录取到 cookie ,模拟登录这个过程有点繁琐,需要计算密码的加密,验证码,还有什么 skey 之类的。
    搜索引擎搜一下能找到很多思路,稍微难一点的在于验证码部分。
    kmahyyg
        17
    kmahyyg  
       2015-11-03 23:14:38 +08:00
    自动挂 wapqq 的有吗?
    crytis
        18
    crytis  
       2015-11-04 00:03:52 +08:00 via Android
    用 selenium 。哈哈
    zzy8200
        19
    zzy8200  
       2015-11-04 04:52:01 +08:00 via iPhone
    zzy8200
        20
    zzy8200  
       2015-11-04 04:52:27 +08:00 via iPhone
    Anteiku
        21
    Anteiku  
       2015-11-04 06:23:00 +08:00 via Android
    几年前写过发说说的,你可以试试模拟早期诺基亚手机的 UA ,那种页面比较容易处理。
    surefire
        22
    surefire  
       2015-11-04 08:17:52 +08:00
    记得 Python 的里的模块要设置 UserAgent ,不然默认是一个 python 的什么模块名,人家网站也不是傻子,一看就知道你是爬虫,自己填个什么 Chrome 浏览器的冒充一下。另外登陆问题肯定是大头,解决了这个其他就好办了
    lcy
        23
    lcy  
       2015-11-04 09:48:51 +08:00
    CheungKe
        24
    CheungKe  
       2015-11-04 09:53:11 +08:00
    @crytis selenium 很非 gui 解决方案吗
    CheungKe
        25
    CheungKe  
       2015-11-04 09:55:13 +08:00
    @Victor215 这又不是搜索引擎蜘蛛,你说的都是基础问题,必须要解决的。
    CheungKe
        26
    CheungKe  
       2015-11-04 09:57:52 +08:00
    @lyning 我们有在做 微信,微博, qq 空间(日志,说说,相册)的数据获取。只有微博是我做的, qq 空间的话,我知道大概思路。
    CheungKe
        27
    CheungKe  
       2015-11-04 10:00:17 +08:00
    @lcy 手机版微博,虽然登录限制少了。解析 html 是个问题,很多时候 tag 没有 class ,或者 id 。 qq 空间估计也一样。
    lyning
        28
    lyning  
    OP
       2015-11-04 10:47:10 +08:00
    @CheungKe 哇,求加好友,深入质询
    lyning
        29
    lyning  
    OP
       2015-11-04 10:48:44 +08:00
    @CheungKe 求联系方式
    M1ehh
        30
    M1ehh  
       2015-11-04 10:48:54 +08:00 via Android
    爬早期手机 QQ 空间网页版。
    jwangkun
        31
    jwangkun  
       2015-11-04 10:50:39 +08:00
    去爬新浪微博吧, QQ 空间是个封闭的空间你大部分东西都是分权限才能看,就算你模拟登录还是一样拿不到关键的数据
    CheungKe
        32
    CheungKe  
       2015-11-04 11:51:05 +08:00
    @jwangkun 微博也是有权限的
    lyning
        33
    lyning  
    OP
       2015-11-04 15:35:40 +08:00
    @lcy 这个 QQ 网页版链接太少了,基本上就是一个纯静态页面
    haofly
        34
    haofly  
       2015-11-06 06:37:12 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4051 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:25 · PVG 13:25 · LAX 21:25 · JFK 00:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.