2024年6月14日发(作者:)
Beautiful Soup documentationPage 1
BeautifulSoup中文文档
原文byLeonardRichardson(leonardr@)
翻译by
RichieYan(richieyan@)
###如果有些翻译的不准确或者难以理解,直接看例子吧。###
英文原文点
这里
BeautifulSoup是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parsetree)。它提供简单又
常用的导航(navigating),搜索以及修改剖析树的操作。它可以大大节省你的编程时间。对于Ruby,使用RubyfulSoup。
这个文档说明了BeautifulSoup3.0主要的功能特性,并附有例子。从中你可以知道这个库有哪些好处,它是怎样工作的,怎样让
它帮做你想做的事以及你该怎样做当它做的和你期待不一样。
目录
快速开始
剖析文档
剖析HTML
剖析XML
如果它不工作
使用Unicode的BeautifulSoup,Dammit
输出文档
剖析树
Tag
s的属性
Navigating剖析树
parent
contents
string
nextSibling
and
previousSibling
next
and
previous
遍历
Tag
使用标签名作为成员
Searching剖析树
Thebasicfindmethod:
findAll(name,attrs,recursive,text,limit,**kwargs)
使用CSS类查找
像
findall
一样调用tag
find(name,attrs,recursive,text,**kwargs)
first
哪里去了?
Searching剖析树内部
findNextSiblings(name,attrs,text,limit,**kwargs)
and
findNextSibling(name,attrs,text,**kwargs)
findPreviousSiblings(name,attrs,text,limit,**kwargs)
and
findPreviousSibling(name,attrs,text,**kwargs)
findAllNext(name,attrs,text,limit,**kwargs)
and
findNext(name,attrs,text,**kwargs)
findAllPrevious(name,attrs,text,limit,**kwargs)
and
findPrevious(name,attrs,text,**kwargs)
Modifying剖析树
改变属性值
删除元素
替换元素
添加新元素
常见问题(Troubleshooting)
为什么BeautifulSoup不能打印我的no-ASCII字符?
BeautifulSoup弄丢了我给的数据!为什么?为什么?????
BeautifulSoup太慢了!
高级主题
产生器(Generators)
其他的内部剖析器
定制剖析器(Parser)
实体转换
使用正则式处理糟糕的数据
玩玩
SoupStrainer
s
通过剖析部分文档来提升效率
使用
extract
改进内存使用
其它
使用BeautifulSoup的其他应用
类似的库
小结
快速开始
从这里获得BeautifulSoup。变更日志描述了3.0版本与之前版本的不同。
在程序中中导入BeautifulSoup库:
/software/BeautifulSoup/8/12/2010 3:58:02 PM
Beautiful Soup documentationPage 2
from BeautifulSoup import BeautifulSoup # For processing HTML
from BeautifulSoup import BeautifulStoneSoup # For processing XML
import BeautifulSoup # To get everything
下面的代码是BeautifulSoup基本功能的示范。你可以复制粘贴到你的python文件中,自己运行看看。
from BeautifulSoup import BeautifulSoup
import re
doc = ['
'
This is paragraph one.',
'
This is paragraph two.',
'']
soup = BeautifulSoup(''.join(doc))
print fy()
#
#
#
# Page title
#
#
#
#
# This is paragraph
#
# one
#
# .
#
#
# This is paragraph
#
# two
#
# .
#
#
#
navigatesoup的一些方法:
ts[0].name
# u'html'
ts[0].contents[0].name
# u'head'
head = ts[0].contents[0]
# u'html'
#
# u'body'
ts[0]
#
This is paragraph one.
ts[0].nextSibling
#
This is paragraph two.
下面是一些方法搜索soup,获得特定标签或有着特定属性的标签:
titleTag =
titleTag
#
# u'Page title'
len(soup('p'))
# 2
l('p', align="center")
# [
This is paragraph one.
]('p', align="center")
#
This is paragraph one.
soup('p', align="center")[0]['id']
# u'firstpara'
('p', align=e('^b.*'))['id']
# u'secondpara'
('p').
# u'one'
soup('p')[1].
# u'two'
修改soup也很简单:
titleTag['id'] = 'theTitle'
ts[0].replaceWith("New title")
#
t()
fy()
#
#
/software/BeautifulSoup/8/12/2010 3:58:02 PM
发布评论