python beautifulsoup 使用,python beautiful soup

  python beautifulsoup 使用,python beautiful soup

  BeautifulSoup提供了一些简单的类似python的函数,用于导航、搜索、修改分析树等。以下文章主要介绍Python爬虫BeautifulSoup的基本使用教程,供大家参考。

  00-1010bs4安装了bs4的快速入门解析器对比(刚懂)简单使用对象类型bs4获取标签内容获取标签名称获取A标签的href属性值遍历文档树案例实践思路代码实现总结

  

目录

 

  要使用BeautifulSoup4,您需要在安装bs4之前安装lxml。

  pip安装lxml

  pip安装bs4

  用法:

  从bs4导入BeautifulSoup

  lxml与bs4的比较研究

  从lxml导入etree

  tree=etree。HTML(html)

  tree.xpath()

  从bs4导入BeautifulSoup

  soup=BeautifulSoup(html_doc, lxml )

  注意事项:

  如果在创建soup对象时没有传递 lxml 或features=lxml ,将出现以下警告

  

bs4的安装

 

  

bs4的快速入门

 

  解析器用法优缺点python标准库美汤(Markup, html.parser) Python标准库,执行速度适中(python2.7.3或3.2.2之前),文档容错性差。lxml的HTML解析器美汤(Markup, lxml )速度快,强文档容错性要求C语言库lxml的xml解析器美汤(Markup, lxml-xml )或美汤(Markup, XML )安装速度快。唯一支持XML的解析器需要安装C语言库HTML5Lib (Markup, HTML5Lib )的最佳容错,通过浏览器解析文档生成HTML5。

  

解析器的比较(了解即可)

 

  标签:标签

  美汤:BS对象

  可导航字符串:可导航的字符串

  评论:评论

  从bs4导入BeautifulSoup

  #创建一个模拟HTML代码的字符串

  html_doc=

  睡鼠的故事/标题/头像

  身体

  睡鼠的故事

  p

  class="story">Once upon a time there were three little sisters; and their names were

  <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,

  <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and

  <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;

  and they lived at the bottom of a well.</p>

  <p class="story">...</p>

  <span><!--comment注释内容举例--></span>

  """

  # 创建soup对象

  soup = BeautifulSoup(html_doc, lxml)

  print(type(soup.title)) # <class bs4.element.Tag>

  print(type(soup)) # <class bs4.BeautifulSoup>

  print(type(soup.title.string)) # <class bs4.element.NavigableString>

  print(type(soup.span.string)) # <class bs4.element.Comment>

  

  

 

  

bs4的简单使用

 

  

 

  

获取标签内容

 

  

from bs4 import BeautifulSoup

 

  注意:在打印p标签对应的代码时,可以发现只打印了第一个p标签内容,这时我们可以通过find_all来获取p标签全部内容

  

print(p标签内容:n, soup.find_all(p))

 

  ✅这里需要注意使用find_all里面必须传入的是字符串

  

 

  

获取标签名字

 

  通过name属性获取标签名字

  

from bs4 import BeautifulSoup

 

  如果要找到两个标签的内容,需要传入列表过滤器,而不是字符串过滤器

  使用字符串过滤器获取多个标签内容会返回空列表

  

print(soup.find_all(title, p))

 

  

[]

 

  

 

  需要使用列表过滤器获取多个标签内容

  

print(soup.find_all([title, p]))

 

  

[<title>The Dormouse's story</title>, <p class="title"><b>The Dormouse's story</b></p>, <p class="story">Once upon a time there were three little sisters; and their names were
<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a> and
<a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>, <p class="story">...</p>]

 

  

 

  

 

  

获取a标签的href属性值

 

  

from bs4 import BeautifulSoup

 

  扩展:使用prettify()美化 让节点层级关系更加明显 方便分析

  

print(soup.prettify())

 

  不使用prettify时的代码

  

<html><head><title>The Dormouses story</title></head>

 

  

 

  

遍历文档树

 

  

from bs4 import BeautifulSoup

 

  

 

  

案例练习

 

  获取所有职位名称

  

html = """

 

  

 

  

思路

 

  不难看出想要的数据在tr节点的a标签里,只需要遍历所有的tr节点,从遍历出来的tr节点取a标签里面的文本数据

  

 

  

代码实现

 

  

from bs4 import BeautifulSoup

 

  运行结果如下:

  

22989-金融云区块链高级研发工程师(深圳)
22989-金融云高级后台开发
SNG16-腾讯音乐运营开发工程师(深圳)
SNG16-腾讯音乐业务运维工程师(深圳)
TEG03-高级研发工程师(深圳)
TEG03-高级图像算法研发工程师(深圳)
TEG11-高级AI开发工程师(深圳)
15851-后台开发工程师
15851-后台开发工程师
SNG11-高级业务运维工程师(深圳)

 

  

 

  

 

  

总结

 

  到此这篇关于Python爬虫之BeautifulSoup基本使用的文章就介绍到这了,更多相关PythonBeautifulSoup使用内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: