全部博文(2065)
分类: Python/Ruby
2010-06-22 23:32:41
BeautifulSoup笔记整理[归档]
时间:
整理一下这个开源框架。依据示例与自己的理解整理。
1. 代码片段
from BeautifulSoup import BeautifulSoup
doc = ['
' This is paragraph one of
ptyhonclub.org.'
' This is
paragraph two of pythonclub.org.'
'']
soup = BeautifulSoup(''.join(doc))
#依据HTML标签查找
print
soup.html.head.title
心得:
1.
依据 . 号可以利用DOM树把元素提取出来。这里面的soup.html.head.title 能够得到一个标签
2.
元素的string属性值是获取当前HTML标签体内的元素字符串。如:
print soup.html.head.title.string 返回的是PythonClub.org。
2. 代码片段:
import re
from BeautifulSoup import
BeautifulSoup
doc =
['
' This is paragraph
one of ptyhonclub.org.',
' This is paragraph two of
pythonclub.org.',
'']
soup =
BeautifulSoup(''.join(doc))
#依据HTML标签查找
print soup.findAll(text=re.compile("para"))
说明一点:这里面我们用的findAll。这个方法是非常有用的。在我们对一个HTML页面进行搜索元素定位的时候就显得非常有用了。它能够依据元素标签的特性或元素内的内容特性定位要查找的内容。
像这个就表示说标签内的元素内容包括了para的。
返回:[u'This is paragraph ', u'This is paragraph ']
PS:记得在上一个项目中我们经常会用到这个东西。主要是在寻找元素标签的时候准确定位
示例:#依据HTML标签查找
print soup.findAll('p',id="firstpara")
这个表示的是什么呢?表示的是这个标签(包含了这个标签)的全部内容。
打印:[ This is paragraph one of
ptyhonclub.org.
含有p标签在内的全部的标签在内。
问题:如果我想获取此标签体内的进一步标签的话要如何处理?
例如:
1. 我想获取当前的id值的话可以这样写
print soup.findAll('p',id="firstpara")[0]['id']
2. 我用print soup.findAll('p',id="firstpara")
能够返回[ This is paragraph one of
ptyhonclub.org.
那如果我想获取one里面的one怎么办呢?
print
soup.findAll('p',id="firstpara")[0].b.string
打印:one
PS:[0] 表示返回的一个序列值,我们只提取第一个。然后再使用HTML的方式进行提取。然后HTML里面的string表示的是元素值。
3. 如果print soup.findAll('p',id="firstpara")
[ This is paragraph one of
ptyhonclub.org.
如果我想打印This is paragraph 要怎么办?
print soup.findAll('p',id="firstpara")[0].contents[0]
说明:这里面这个contents非常有用。我个人感觉 这个东西是什么呢?这个东西其实是表示在一段标签体内,元素与标签这样的一个划分。如
This is paragraph
one of ptyhonclub.org.
print
soup.findAll('p',id="firstpara")[0].contents[0]
: This is paragraph
print
soup.findAll('p',id="firstpara")[0].contents[1]
: one
以下两个表达式效果是一样的
print soup.findAll('p',id="firstpara")[0].contents[1].string
print soup.findAll('p',id="firstpara")[0].b.string
print
soup.findAll('p',id="firstpara")[0].b.a["href"]
能够准确定位到标签的属性。有了这些属性就能够查找到这个属性值。
介绍一下它的编码流程
按下面的顺序检测编码:
chinaunix网友2010-06-22 23:54:56
1.如果帖子里面有图片如何处理?http://laiba.tianya.cn/laiba/CommMsgs?cmm=12268&tid=2710205517210103205&ref=commmsgs-paging&na=1&nst=1&pno=1 2.相关帖子如何处理? 3.下面某个楼层的用户引用上面楼层的内容如何引用? 4. 分页帖子如何处理?