beautifulsoup学习笔记

beautifulsoup的学习给我的感受学习一个新的模块就是一定要去看官方文档,网上的文档只是摘抄,加上自己的一些理解(包括这篇,:)),详尽和准确度都不如官方文档;另外还要对模块的背景知识最好有一些了解,如果你不熟悉html的一些基本知识,看官方文档会看得稀里糊涂,没有理解的那么好。

  • html基本知识:html的标签、标签的属性、标签的属性class
    类似<b></b>(中间的内容是粗体)、<h1></h1>(标题1格式)等,每种标签都有不同的意思,例如前面两个例子代表的就是括号中的显示样式 ,标签可以嵌套。标签括起来的整个东西叫做元素,例如:
    <h1>this is a headline</h1>
    就是一个元素。
    标签的属性一个例子请看这里,表示这个标签的一些补充“信息”,比如<a><\a>表示这是一个链接,但是你要给出链接地址你就要把链接赋给href这个属性:
    <a href="ri.htm" class="whitewine">雷司令(Riesling)</a>
    标签的其中一个经常见到属性class可以对标签进行分类,比如你可以对多个标签都设置为class=“AAA”,然后再设置class=“AAA”的显示为红色的之类的,这样子就方便归类和整体改变属性。更加详细看这里

  • beautifulsoup中的tag类型,这个跟html里面的标签是对应的。
    tag的两个重要属性:
    name,举个例子这个标签<a><\a>的name属性就是a
    Attributes,属性,跟上面说的属性一样,获得属性的方法与字典相同,例如tag['class']
    如果是这样子tag.attrs操作会以字典的形式得到所有的属性,就像这个{u'class': u'boldest'}

  • find_all函数
    下面这段完全可以在beautifulsoup官方文档中找到,这里只是复述。

def find_all(self, name=None, attrs={}, recursive=True, text=None,
                 limit=None, **kwargs):

参数1——name,这个name对应的是标签的名字,搜索 name
参数的值可以使任一类型的 过滤器 ,字符窜,正则表达式,列表,方法或是 True,具体如下所示:
1.第一个参数是标签的名字,soup.find_all('b')找出所有的<b>标签
2.还可以用正则表达式
下面例子找出所有以b开头的标签,而不仅仅是<b>标签

import re
for tag in soup.find_all(re.compile("^b")):
    print(tag.name)

3.若传入的是列表,则找出列表每个元素的标签
4.若传入的是True,则找出所有的标签,没有去重。
5.你还可以自己传入一个方法来自定义查找

参数2——attrs,搜索属性的时候可以用id="link2"之类的,也可以用类似于这样的:attrs={"data-foo": "value"}

参数3——string,参数可以搜搜文档中的字符串内容.

其他参数及其简写方式见官方文档。

获取某个属性的内容obj['class']等
获取标签名字obj.name
获取标签内容obj.get_text()

  • 各种html的标签的意思
    <li><\li>:list item,也就是列表项
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容