2012-10-31
周海汉 http://abloz.com 2012.10.31 听说11.3要来暖气?
beautifulsoap只有一个py文件,但功能强大,可分析不完整的html页面。下面是用法示例。 安装: [zhouhh@Hadoop48 test1]$ sudo pip install BeautifulSoup 或者去官网下载:http://www.crummy.com/software/BeautifulSoup/
python操作
>>> from BeautifulSoup import BeautifulSoup
>>> doc = ['<html><head><title>用BeautifulSoup对不完整网页分析测试 from abloz.com</title></head>',
... '<body><p id="f" class="test" >我的网站 <b>分析</b> from abloz.com.',
... '<p id="s" >第二行',
... '<a href="http://abloz.com">瀚海星空</a>',
... '<a href="http://google.com">google</a>',
... '</html>']
>>> soup = BeautifulSoup(''.join(doc))
>>> soup.html.title
<title>用BeautifulSoup对不完整网页分析测试 from abloz.com</title>
>>> soup.html.body.p
<p id="f" class="test">我的网站 <b>分析</b> from abloz.com.</p>
>>> soup.html.title.name
u'title'
>>> soup.html.title.text
u'u7528BeautifulSoupu5bf9u4e0du5b8cu6574u7f51u9875u5206u6790u6d4bu8bd5 from abloz.com'
>>> soup.html.title.string
u'u7528BeautifulSoupu5bf9u4e0du5b8cu6574u7f51u9875u5206u6790u6d4bu8bd5 from abloz.com'
>>> print soup.html.title.string
用BeautifulSoup对不完整网页分析测试 from abloz.com
>>> soup.title
<title>用BeautifulSoup对不完整网页分析测试 from abloz.com</title>
>>> ps = soup.findAll("p")
>>> for p in ps:
... print p
...
<p id="f" class="test">我的网站 <b>分析</b> from abloz.com.</p>
<p id="s">第二行<a href="http://abloz.com">瀚海星空</a><a href="http://google.com">google</a></p>
>>> ps[1]
<p id="s">第二行<a href="http://abloz.com">瀚海星空</a><a href="http://google.com">google</a></p>
>>> ps[0]
<p id="f" class="test">我的网站 <b>分析</b> from abloz.com.</p>
>>> aes=soup.findAll("a")
>>> for a in aes:
... print a.text
... print a["href"]
...
瀚海星空
http://abloz.com
google
http://google.com
>>> import re
>>> ts = soup.findAll(text=re.compile("分析"))
>>> print ts
[]
>>> ts = soup.findAll(text=re.compile("goo"))
>>> print ts
[u'google']
注意如何支持中文:转为unicode
>>> ts = soup.findAll(text=re.compile(u"分析"))
>>> ts
[u'u7528BeautifulSoupu5bf9u4e0du5b8cu6574u7f51u9875u5206u6790u6d4bu8bd5 from abloz.com', u'u5206u6790']
>>> for t in ts:
... print t
...
用BeautifulSoup对不完整网页分析测试 from abloz.com
分析
>>> ids = soup.findAll(id=re.compile("f"))
>>> ids
[<p id="f" class="test">我的网站 <b>分析</b> from abloz.com.</p>]
和上一个等价的方式
>>> ids = soup.findAll(attrs={"id":re.compile("f")})
>>> ids
[<p id="f" class="test">我的网站 <b>分析</b> from abloz.com.</p>]
>>> soup.find("p")
<p id="f" class="test">我的网站 <b>分析</b> from abloz.com.</p>
>>> soup.find("a")
<a href="http://abloz.com">瀚海星空</a>
参考: 中文文档:http://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html 官网:http://www.crummy.com/software/BeautifulSoup/
如非注明转载, 均为原创. 本站遵循知识共享CC协议,转载请注明来源
FEATURED TAGS
css
vc6
http
automake
linux
make
makefile
voip
乱码
awk
flash
vista
vi
vim
javascript
pietty
putty
ssh
posix
subversion
svn
windows
删除
编译
多线程
wxwidgets
ie
ubuntu
开源
c
python
bash
备份
性能
scp
汉字
log
ruby
中文
bug
msn
nginx
php
shell
wordpress
mqueue
android
eclipse
java
mac
ios
html5
js
mysql
protobuf
apache
hadoop
install
iocp
twisted
centos
mapreduce
hbase
thrift
tutorial
hive
erlang
lucene
hdfs
sqoop
utf8
filter
草原
yarn
ganglia
恢复
scrapy
django
fsimage
flume
tail
flume-ng
mining
scala
go
kafka
gradle
cassandra
baas
spring
postgres
maven
mybatis
mongodb
https
nodejs
镜像
心理学
机器学习
Keras
theano
anaconda
docker
spark
akka-http
json
群论
区块链
加密
抽象代数
离散对数
同余
欧拉函数
扩展欧几里德算法
ES6
node-inspect
debug
win10
vscode
挖矿