c 抓取网页数据(BeautifulSoupPython安装C语言库教程)

优采云 发布时间: 2022-04-13 03:27

  c 抓取网页数据(BeautifulSoupPython安装C语言库教程)

  美丽的汤

  BeautifulSoup(markup, 'html.parser')

  Python内置标准库,执行速度适中,文档容错能力强

  BeautifulSoup(markup, 'lxml')

  速度快,文档容错能力强,需要安装C语言库

  BeautifulSoup(markup, 'xml')

  快,唯一支持XML的解析器,需要安装C语言库

  BeautifulSoup(markup, 'html5lib')

  提供最佳的容错能力,以类似浏览器的方式解析文档,生成HTML5格式的文档,速度慢,不依赖外部扩展

  # 使用lxml库解析,完成BS对象初始化(可以自动更新HTML格式)

soup = BeautifulSoup(html, 'lxml')

# 把要解析的字符串以标准的缩进格式输出

print(soup.prettify())

# 输出soup内容中title节点的文本内容

print(soup.title.string)

  from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'lxml')

print(soup.title)

print(type(soup.title))

print(soup.title.string)

print(soup.head)

print(soup.p)

  from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'lxml')

# 获取节点名称

print(soup.title.name)

# 获取一个节点的所有属性(以字典的形式返回)

print(soup.p.attrs)

# 获取p节点属性名为name的值

print(soup.p.attrs['name'])

print(soup.p['name'])

print(soup.p['class'])

# 获取p节点的直接子节点(contents返回的是直接子节点组成的列表)

print(soup.p.contents)

# 获取p节点下的所有孩子节点(children返回的是一个*敏*感*词*类型)

print(soup.p.children)

for i, child in enumerate(soup.p.children):

print(i, child)

# 获取所有子孙节点

print(soup.p.descendants)

for i, child in enumerate(soup.p.descendants):

print(i, child)

# 获取p节点的父亲

print(soup.p.parent)

# 获取p节点的所有祖先

print(type(soup.p.parents))

print(list(enumerate(soup.p.parents)))

# 获取下一个兄弟

print(soup.a.next_sibling)

# 获取上一个兄弟

print(soup.a.previous_sibling)

# 获取下面的兄弟

print(list(enumerate(soup.a.next_siblings)))

# 获取上面的兄弟

print(list(enumerate(soup.a.previous_siblings)))

# 获取a节点的祖先节点类型

print(type(soup.a.parents))

# 获取a节点的第一个祖先

print(list(soup.a.parents)[0])

# 获取a节点的第一个祖先的class属性

print(list(soup.a.parents)[0].attrs['class'])

  find_all:查找所有匹配的元素

  # find_all()参数说明:

"""

find_all(name, attrs, recursive, text, **kwargs)

"""

from bs4 import BeautifulSoup

  html = """

first item

second item

third item

fourth item

fifth item

"""

soup = BeautifulSoup(html, 'lxml')

# 调用find_all()方法查询所有ul节点,返回结果是列表类型,每个元素时bs4.element.Tag类型

print(soup.find_all(name='ul'))

# 再查出ul里面的li

for ul in soup.find_all(name='ul'):

print(ul.find_all(name='li'))

# 遍历每一个li节点拿文本内容

for ul in soup.find_all(name='ul'):

for li in ul.find_all(name='li'):

print(li.string)

  from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'lxml')

print(soup.find_all(text=re.compile('link')))

  find():返回找到的第一个结果

  find_parents():返回所有祖先节点

  find_parent():返回直接父节点

  find_next_siblings():返回所有后续兄弟

  find_next_siblings():返回后面的第一个兄弟节点

  find_previous_siblings():返回所有以前的兄弟姐妹

  find_previous_siblings():返回前面的第一个兄弟节点

  find_all_next():返回节点后所有满足条件的节点

  find_next():返回后面第一个满足条件的节点

  find_all_previous:返回节点之前所有符合条件的节点

  find_previous:返回节点前第一个满足条件的节点

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线