【python】利用BeautifulSoup提取html中的标签、数据

这篇具有很好参考价值的文章主要介绍了【python】利用BeautifulSoup提取html中的标签、数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        对于不熟悉HTML和正则表达式的人,可以用第三方模块包BeautifulSoup来提取HTML或XML中的数据。

实例化BeautifulSoup对象:

使用解析器分析指定的网页源代码,得到源代码的结构模型

from bs4 import BeautifulSoup
import requests as re

headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'}
rsp=re.get(url='https://ww.baidu.com',headers=headers)
#打开百度网页
soup=BeautifulSoup(rsp.text,'lxml')
#获取源代码,并实例化BeautifulSoup对象

print(soup)

【python】利用BeautifulSoup提取html中的标签、数据

定位标签

通过标签名进行定位

源代码中可能会有多个同名标签,通过标签名定位只能返回第一个标签:

from bs4 import BeautifulSoup
import requests as re

headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'}
rsp=re.get(url='https://ww.baidu.com',headers=headers)
#打开百度网页
soup=BeautifulSoup(rsp.text,'lxml')
#获取源代码,并实例化BeautifulSoup对象

print(soup.p)
#通过标签名定位第一个<p>标签

【python】利用BeautifulSoup提取html中的标签、数据

通过标签属性定位 

标签的属性有class、id,平时使用主要使用class属性(因为class是python的关键词,所以使用时需要加下划线)

from bs4 import BeautifulSoup
import requests as re

headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'}
rsp=re.get(url='https://ww.baidu.com',headers=headers)
#打开百度网页
soup=BeautifulSoup(rsp.text,'lxml')
#获取源代码,并实例化BeautifulSoup对象

print(soup.find(class_='s-center-box'))
#通过标签名定位第一个属性为"s-center-box"的标签
print(soup.find_all(class_='s-center-box'))
#通过标签名定位所有属性为"s-center-box"的标签,并以数组的形式返回

【python】利用BeautifulSoup提取html中的标签、数据

此外,还可以通过标签名+属性的方式定位

from bs4 import BeautifulSoup
import requests as re

headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'}
rsp=re.get(url='https://ww.baidu.com',headers=headers)
#打开百度网页
soup=BeautifulSoup(rsp.text,'lxml')
#获取源代码,并实例化BeautifulSoup对象

print(soup.find('div',class_='s-center-box'))
#通过标签名定位第一个属性为"s-center-box"的div标签
print(soup.find_all('div',class_='s-center-box'))
#通过标签名定位所有属性为"s-center-box"的div标签,并以数组的形式返回

【python】利用BeautifulSoup提取html中的标签、数据

通过选择器进行定位

使用select()函数可以返回所有符合条件的标签,常用的有id选择器、class选择器、标签选择器、层级选择器

id选择器、class选择器、标签选择器的用法:

from bs4 import BeautifulSoup
import requests as re

headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'}
rsp=re.get(url='https://ww.baidu.com',headers=headers)
#打开百度网页
soup=BeautifulSoup(rsp.text,'lxml')
#获取源代码,并实例化BeautifulSoup对象

print(soup.select('#s_wrap'))         #id选择器,要加#符号,然后加id
print(soup.select('.bdpfmenu'))       #class选择器,要加.符号,然后加class属性
print(soup.select('li'))              #标签选择器,直接写标签的类型

【python】利用BeautifulSoup提取html中的标签、数据

层级选择器可以先定位外层标签,再定位内存标签,一层层向内定位就可以找到需要的标签

from bs4 import BeautifulSoup
import requests as re

headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'}
rsp=re.get(url='https://ww.baidu.com',headers=headers)
#打开百度网页
soup=BeautifulSoup(rsp.text,'lxml')
#获取源代码,并实例化BeautifulSoup对象

print(soup.select('div>li'))                #div标签下的li标签,其中div和li之间没有其他层级
print(soup.select('div>li>#s_wrap'))        #div标签下li标签中id为s_wrap的标签
print(soup.select('div li'))                #div标签下的li标签,其中div和li可以有任意层级

上述为距离,baidu页面中没有实际的标签

从标签中提取文本和属性

string属性可以返回标签下的“直系”文本,该标签下其他标签的文本不提取

而text属性时指定标签下的所有文本

字典取值的方式可以取出属性值

from bs4 import BeautifulSoup
import requests as re

headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'}
rsp=re.get(url='https://ww.baidu.com',headers=headers)
#打开百度网页
soup=BeautifulSoup(rsp.text,'lxml')
#获取源代码,并实例化BeautifulSoup对象

print(soup.select('.title-content-title')[0].string)            #class属性为title-content-title的标签直系文本
print(soup.select('.title-content-title')[0].text)              #class属性为title-content-title的标签下所有文本
print(soup.find(class_='s-center-box')['class'])                #指定标签的属性

【python】利用BeautifulSoup提取html中的标签、数据

 文章来源地址https://www.toymoban.com/news/detail-492219.html

到了这里,关于【python】利用BeautifulSoup提取html中的标签、数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python爬虫基础入门——利用requests和BeautifulSoup

    (本文是自己学习爬虫的一点笔记和感悟) 经过python的初步学习,对字符串、列表、字典、元祖、条件语句、循环语句……等概念应该已经有了整体印象,终于可以着手做一些小练习来巩固知识点,写爬虫练习再适合不过。 爬虫的本质就是从网页中获取所需的信息,对网页

    2024年02月15日
    浏览(43)
  • XPath:学习使用XPath语法提取HTML/XML文档中的数据使用语法

    以下是一些XPath语法示例,用于提取HTML/XML文档中的数据: 选择元素: 选择所有p元素: //p 选择根元素: / 属性匹配: 选择class属性为\\\"example\\\"的div元素: //div[@class=\\\'example\\\'] 文本内容提取: 提取所有a元素的文本内容: //a/text() 提取第一个p元素的文本内容: //p[1]/text() 使用逻辑

    2024年02月11日
    浏览(32)
  • html利用a标签实现下载本地的文件

            在写html页面的时候,需要在网页上提供一个下载按钮可以下载我自己电脑中的文件。我已经知道了该文件的路径,但是之前看了很多文章都没找到正确办法,一直不知道如何能够下载本地的文件,经过不断实验发现,可以利用a标签中的downlo属性,同时将href属性设

    2023年04月15日
    浏览(30)
  • Advance:HTML 中的视频标签和音频标签

    在本文中,我们将了解 HTML5 的视频和音频标签。video 标记用于在文档中嵌入视频内容,例如影片剪辑或其他视频流。audio 标记用于在文档中嵌入声音内容,例如音乐或其他音频流。 HTML5 为您提供了两个标签 - video 和 audio。我们将在本文中学到很多关于这两个的信息,因此

    2024年02月19日
    浏览(27)
  • html5中的meta标签用法详解

    来源:视频砖家 html5中的meta标签主要用于描述网页的元数据,它可以用于描述网页的标题、、描述、作者、版权等信息,还可以用于设置网页的字符集、设置网页的刷新时间、设置网页的跳转页面等。 meta charset=\\\"utf-8\\\":用于定义网页的字符集为 UTF-8,UTF-8 - Unicode 字符

    2024年02月16日
    浏览(29)
  • HTML5中的视频和音频标签

    HTML5中的视频标签是 video ,音频标签是 audio 。这两个标签都是HTML5新增的多媒体标签,用于在网页中嵌入视频和音频。 1、视频标签 video 可以通过以下属性来控制视频的播放: src:指定视频文件的URL。 poster:指定视频封面图的URL。 width:指定视频的宽度。 height:指定视频的

    2024年02月03日
    浏览(31)
  • HTML中script 标签中的那些属性

    在HTML中, script 标签用于嵌入或引用JavaScript代码。 在 script 标签中,有两个属性可以用来控制脚本的加载和执行方式: async 和 defer 。 当然这也是常见的一道面试题, async   和  defer 的作用和区别。 async 和 defer 属性都可以用于异步加载脚本,从而避免了在加载脚本时阻塞浏

    2024年02月01日
    浏览(39)
  • 使用正则表达式替换文本中的html标签

    我们存储 markdown 文章时,如果存储转换后的 html 页面,那么在查出来的时候,会带有标签,可以使用正则表达式去除标签 如果要展示 html 文本,肯定不能直接删除掉标签,如下即可:

    2024年02月13日
    浏览(33)
  • 如何批量修改删除html文件中的标签属性

    最近工作中遇到一个问题,一份html文档因为内容里面的样式标签过多导致文件整体过大。 这些描述标签不是必须的,现在需要优化删除掉这些标签从而减小文件体积。 对于这种批量修改删除的任务,我们首先想到的就是使用编辑器处理。 编辑html文档,我使用的是VS Code,它

    2024年02月01日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包