【Python3 爬虫学习笔记】解析库的使用 6 —— Beautiful Soup 4

text

text参数可用来匹配节点的文本,传入的形式可以是字符串,可以是正则表达式,可以是正则表达式对象,示例如下:

import re
html = '''

'''
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'lxml')
print(soup.find_all(text=re.compile('link')))

运行结果如下:

['Hello,this is a link', 'Hello,this is a link,too']
find()

除了find_all()方法,还有find()方法,只不过后者返回的是单个元素,也就是第一个匹配的元素,而前者返回的是所有匹配的元素组成的列表。示例如下:

html = '''

Hello

  • Foo
  • Bar
  • Jay
  • Foo
  • Bar
'''
from bs4 import BeautifulSoup soup = BeautifulSoup(html, 'lxml') print(soup.find(name='ul')) print(type(soup.find(name='ul'))) print(soup.find(class_='list'))

运行结果如下:

<ul class="list" id="list-1">
<li class="element">Foo</li>
<li class="element">Bar</li>
<li class="element">Jay</li>
</ul>
<class 'bs4.element.Tag'>
<ul class="list" id="list-1">
<li class="element">Foo</li>
<li class="element">Bar</li>
<li class="element">Jay</li>
</ul>

这里的返回结果不再是列表,而是第一个匹配的节点元素,类型依然是Tag类型。
另外,还有许多查询方法,其用法与前面介绍的find_all()、find()方法完全相同,只不过查询范围不同,这里简单说明下:

  • **find_parents()和find_parent():**前者返回所有祖先节点,后者返回直接父节点。
  • **find_next_siblings()和find_next_sibling():**前者返回后面所有的兄弟节点,后者返回后面第一个兄弟节点。
  • **find_previous_siblings()和find_previous_sibling()?*前者返回前面所有的兄弟节点,后者返回前面第一个兄弟节点。
  • **find_all_next()和find_next():**前者返回节点后所有符合条件的节点,后者返回第一个符合条件的节点。
  • **find_all_previous()和find_previous():**前者返回节点后所有符合条件的节点,后者返回第一个符合条件的节点。

你可能感兴趣的:(学习笔记)