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

寻把通过 BeautifulSoup 得到数据拆开的办法

  •  
  •   ooof ·
    ooof · 2013-02-04 00:24:32 +08:00 · 3694 次点击
    这是一个创建于 4309 天前的主题,其中的信息可能已经有所发展或是发生改变。
    代码:

    # -*- coding: utf-8 -*-
    from bs4 import BeautifulSoup as BS
    import urllib2
    response=urllib2.urlopen('http://twitual.com/?user=linfen')
    html=response.read()
    soup=BS(html)
    kk = soup.findAll('ol')[0].text
    print kk


    显示:

    @addyyan
    @hcmy
    @hootsuite
    @Mandyless
    @metalslagcn
    @Mrdaydayup
    @ooof
    @Poiyzy
    @sakiola
    @STARSTRUCK28a
    @startime
    @WangCephas
    @wuzhiwo
    @xltkxltk
    @yaodu
    @youbama


    我需要处理后得出这样的格式:

    linfen , @addyyan
    linfen , @hcmy
    linfen , @hootsuite
    linfen , @Mandyless
    linfen , @metalslagcn
    linfen , @Mrdaydayup
    linfen , @ooof
    linfen , @Poiyzy
    linfen , @sakiola
    linfen , @STARSTRUCK28a
    linfen , @startime
    linfen , @WangCephas
    linfen , @wuzhiwo
    linfen , @xltkxltk
    linfen , @yaodu
    linfen , @youbama


    我不知道现在 kk 是个什么格式的数据,数组/字典/...?

    所以,还是不知道怎么才能拆开这个数据。
    7 条回复    1970-01-01 08:00:00 +08:00
    BeanYoung
        1
    BeanYoung  
       2013-02-04 00:33:12 +08:00   ❤️ 1
    kk是个字符串。可以按照\n来分割得到每个用户。
    l = [k for k in kk.split('\n') if k]

    你想得到的东西没有表达清楚,想要一个列表?字符串?
    列表:
    l = ['linfen,' + k for k in kk.split('\n') if k]
    字符串:
    '\n'.join(l)
    ooof
        2
    ooof  
    OP
       2013-02-04 00:45:38 +08:00
    太感谢! 终于可以做到了。
    ooof
        3
    ooof  
    OP
       2013-02-04 14:12:19 +08:00
    @BeanYoung , 不好意思,你能再帮我看看吗? 如果想输出如下的格式,代码该怎么改呢?

    @addyyan , linfe
    @hcmy , linfe
    @hootsuite , linfe
    @Mandyless , linfe
    @metalslagcn , linfe
    spark
        4
    spark  
       2013-02-04 15:47:43 +08:00
    ......
    l = [k + ', linfen' for k in kk.split('\n') if k]
    ooof
        5
    ooof  
    OP
       2013-02-04 16:28:51 +08:00 via Android
    @spark 非常感谢!
    ooof
        6
    ooof  
    OP
       2013-02-04 22:17:42 +08:00
    如果用 response=urllib2.urlopen('http://twitual.com/?user=linfen') 和 bs 去读一个页面的 ol ,但这个页面并没有 ol ,应该怎么判断?
    spark
        7
    spark  
       2013-02-15 12:27:35 +08:00
    @ooof 判空就好啊...

    另外,推荐你用PyQuery代替BS
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1033 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 19:41 · PVG 03:41 · LAX 11:41 · JFK 14:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.