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

2013-02-04 00:24:32 +08:00
 ooof
代码:

# -*- 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 是个什么格式的数据,数组/字典/...?

所以,还是不知道怎么才能拆开这个数据。
3696 次点击
所在节点    Python
7 条回复
BeanYoung
2013-02-04 00:33:12 +08:00
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
2013-02-04 00:45:38 +08:00
太感谢! 终于可以做到了。
ooof
2013-02-04 14:12:19 +08:00
@BeanYoung , 不好意思,你能再帮我看看吗? 如果想输出如下的格式,代码该怎么改呢?

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

另外,推荐你用PyQuery代替BS

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/59694

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX