Python网络数据采集(2)——复杂HTML解析(1)

一、关于两个重要的函数find(),findAll()的总结
  用途:通过find和findAll过滤HTML页面,查找需要的标签或者标签组
  函数构造:
    findAll(tag, attributes, recursive, text, limit, keywords)
    find(tag, attributes, recursive, text, keywords)
  其中:
    tag是标签参数,可以传一个标签或多个标签组成的标签列表
    attributes是python封装的一个标签的若干属性和对应的属性值

    findAll({"h1", "h2", "h3", "h4"})
    findAll("span", {"class": {"green", "red"}}) 
    #寻找所有class为green和red的span标签

    recursive是一个布尔变量,为true时查找标签参数的所有自标签、为false时只查找文档的一级标签。默认情况下是true
    text是文本参数,用标签的文本内容去匹配。
    nameList = bsObj.findAll(text="something")
    limit是范围限制参数,之应用在find函数中。find相当于findAll在limit=1时的情形,limit=x就表示只要求获取前x项结果
    keyword是关键词参数,可以选择那些具有指定属性的标签

    allText = bsObj.findAll(id="text")
    print((allText[0]).get_text())

  .get_text()会把你正在处理的HTML文档中的所有标签都清除,然后只返回一个只包含文字的字符串。如果你正在处理一个包含许多超链接、段落以及标签的大段源代码,那么get_text()会把这些超链接、段落、以及标签全都清除,剩下不带标签的文字。
  通常在你准备打印,存储以及操作数据时,应该在最后再使用.get_text()去提取你想要的文本信息,在一般的情况下,应该尽可能的保留HTML文档的标签的结构。

二、BeautifulSoup的其他对象
BeautifulSoup对象:前面代码示例中的bsObj对象
标签Tag对象:BeautifulSoup对象通过find和findAll,胡哦这直接调用自标签获取的一列对象或单个对象,就像:bsObj.div.h1。
NavigableString对象:表示标签里的文字(不是标签)
Comment对象:用来查找HTML文档的注释标签,如<!–something–>

猜你喜欢

转载自blog.csdn.net/qq_28301007/article/details/79011024
今日推荐