bs4解析

原理:

  • 1.实例化一个BeautifulSoup对象,并且将页面源码数据加载到该对象中
  • 2.通过调用BeautifulSoup对象中相关的属性或者方法进行标签定位和数据提取

如何实例化BeautifulSoup对象:

from bs4 import BeautifulSoup
BeautifulSoup(参数一,参数二)
参数一为文件描述符,参数二为解析器,一般为’lxml’
一对象的实例化:

  • 1.将本地的html文档中的数据加载到该对象中
fp = open( './test.html','r',encoding='utf-8')
soup=BeautifulSoup(fp,'lxml')
  • 2.将互联网上获取的页面源码加载到该对象中
page_text =response.text
soup=BeatifulSoup(page_text,'lxml')

soup指初始化的BeautifulSoup对象

用于数据解析的方法和属性:

1.soup.tagName:返回的是文档中第一次出现的tagName对应的标签
2.soup.find():

(1).find( ‘tagName’):等同于soup.tagName
(2).属性定位:soup.find(‘div’,class_/id/或者其他属性=‘song’)
定位到< div class=“song”>/< div id=“song”>的标签下
class如果没有加_则代表关键字

3.soup.find_all(‘tagName’):返回符合要求的所有标签(列表)

soup对象:<div class="tang"><ul><li><a href="http://www.baidu.com" title= "ging">清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村</a></1i><li><a href="http://www.163.com" title="qin">秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山</a></1i><li><a href=" http://ww.126.com"alt="qi ">歧王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君</a></li><li><a href="http: //www.sina.com" class="du">杜甫</a></li><li><a href="http://www.dudu.com" class="du">杜牧</a></li><li><b>杜小月</b></li><li><i>度蜜月</i></li><li><a href="http://ww.hana.com”id="feng">凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘</a></li></ul>
</div>

4.select:
- select(‘某种选择器(id,class,标签…选择器)’),返回的是一个列表。
标签什么都不加,class前面加. id前面加#

层级选择器:
>表示的是一个层级;空格表示的多个层级

     soup.select( '.tang > ul > li > a') soup.select( '.tang >ul a')结果为:[<a href="http://www.baidu.com" title= "ging">清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村</a>,<a href="http://www.163.com" title="qin">秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山</a>,<a href=" http://ww.126.com"alt="qi ">歧王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君</a>,<a href="http: //www.sina.com" class="du">杜甫</a>,<a href="http://www.dudu.com" class="du">杜牧</a>,<a href="http://ww.hana.com”id="feng">凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘</a>]

5.获取标签之间的文本数据:
-soup.a.text/string/get_text()
-text/get_text():可以获取某一个标签中所有的文本内容
-string:只可以获取该标签下面直系的文本内容
6.获取标签中属性值:
soup.a[‘属性值’]

print(soup.select( '.tang > ul > li > a') [0]['href'])
结果:
www.baidu.com

xpath解析

最常用且最便捷高效的一种解析方式。通用性。

xpath解析原理:

1.实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中。
2调用etree对象中的xpath方法结合着xpath表达式实现标签的定位和内容的捕获。

实例化一个etree对象:

from lxml import etree
-1.将本地的html文档中的源码数据加载到etree对象中:
etree.parse(filePath)
-2.可以将从互联网上获取的源码数据加载到该对象中
etree.HTML( 'page_text')

xpath( ‘xpath表达式’)

xpath表达式:(返回一个列表)
-/:表示的是从根节点开始定位。表示的是一个层级。
-//:表示的是多个层级。可以表示从任意位置开始定位。
-属性定位://div[@class=‘song’] tag[@attrname=‘attrvalue’]
-索引定位://div[@class=‘song’]/p[3]
索引从1开始的

取文本:

  • /text()获取的是标签中直系的文本内容
  • //text(标签中非直系的文本内容(所有的文本内容)

取属性:
/@attrName
eg:/img/@src

./表示定位到当前位置(局部解析)

多个xpath之间用|分割:
tree.xpath(’//div[@class=‘song’]/p[3] | //div[@class=‘song’]’)

python爬虫之bs4解析和xpath解析相关推荐

  1. Python爬虫:bs4解析

    Python爬虫:bs4解析 html语法 什么是bs4 bs4安装 从bs4中查找数据的方法 bs4的基本使用 实例:使用bs4爬取优美图库图片 思路 代码 html语法 <标签 属性=&qu ...

  2. python爬取网页表格数据匹配,python爬虫——数据爬取和具体解析

    标签:pattern   div   mat   txt   保存   关于   json   result   with open 关于正则表达式的更多用法,可参考链接:https://blog.c ...

  3. python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程

    python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程 前言 一丶整体思路 二丶遇到的问题 三丶分析URL 四丶解析页面 五丶写入文件 六丶完整代码 七丶最后 前言 大家好我是墨绿 头顶总 ...

  4. Python爬虫学习之数据提取(XPath)

    Python爬虫学习之数据提取XPath 概述 常用规则 运算符及介绍 准备工作 实例 文本获取 属性获取 属性值匹配 属性多值匹配 多属性匹配 按序选择 概述 XPath的全称是XML Path L ...

  5. python爬虫之bs4模块(超详细)

    python爬虫之bs4模块(超详细) 一.bs4简介 二.使用方法 三.BeautifulSoup四大对象种类 (1)tag (2)NavigableString (3)BeautifulSoup ...

  6. Python 爬虫找到数据了 re XPath requests Pool

    Python 爬虫找到数据了 re & XPath & requests & Pool 2018.06.16 23:18 88浏览 字号 是的,爬虫就是为了获取数据.在获取的数 ...

  7. 小白学 Python 爬虫(20):Xpath 进阶

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  8. python爬虫正则解析及xpath解析,lxml解析库

    正则解析模块re re模块使用流程 方法一 r_list=re.findall('正则表达式',html,re.S) 方法二 # 1.创建正则编译对象 pattern = re.compile('正则 ...

  9. Python爬虫初学三(网络数据解析)

    目录 1.学习正则表达式的原因 2.什么是正则表达式 3.正则表达式匹配规则 4.正则实现步骤 5.Pattern 对象 6.正则模块常量 7.Match 对象 8.search 9.findall和 ...

  10. 数据解析学习笔记(正则解析、bs4解析、xpath解析)

    聚焦爬虫:爬取页面中指定的页面内容. - 编码流程: - 指定url - 发起请求 - 获取响应数据 - 数据解析 - 持久化存储 数据解析分类: 正则 bs4 xpath(***) 数据解析原理概述 ...

最新文章

  1. Openresty (nginx + lua)
  2. Servlet 表单数据
  3. 『操作系统』 进程的描述与控制 Part 1 前驱图与程序执行
  4. appium===setup/setupclass的区别,以及@classmathod的使用方法
  5. 博客堂joycode被黑掉了
  6. wpf ListView圆角
  7. 华为云计算HCIE学习笔记-FusionAccess
  8. 国家统计局全国统计用区划代码和城乡划分代码Python爬虫样例
  9. mac分区后数据丢失怎么恢复?
  10. 微信小程序 java民宿客房预订系统springboot
  11. 从零开始实现mini-min网易云音乐(一)
  12. Java使用Netty实现Modbus-RTU通信协议
  13. 第14章 数据仓库与数据挖掘
  14. 布袋除尘器过滤风速多少_太原布袋式除尘器过滤风速一般多大
  15. Mac 安装natapp
  16. [源码]Meepo路由
  17. route和bridge是什么意思_vue-router中router和route的区别
  18. .NET 技术FAQ
  19. 英雄联盟也能作为作文素材
  20. 我不知道如何使用这台计算机用英语怎么说,我不知道英文

热门文章

  1. 邵阳计算机学院高考班成绩,邵阳这个学校出了一个“牛班”,“火箭班”考生本科上线率100%!...
  2. linux 光盘刻录命令,Linux命令刻录光盘
  3. 2022-02-05大数据学习日志——Hadoop离线阶段——Hive SQL DDL
  4. php多张图片下载(zip压缩)
  5. TensorFlow ERROR:Resource temporarily unavailable
  6. 大数据可视化应用_在数据可视化中应用种族平等意识
  7. Python爬虫入门教程 7-100 蜂鸟网图片爬取之二
  8. Meltdown Spectre原理简要梳理
  9. Meltdown Attack
  10. Python自定义豆瓣电影种类,排行,点评的爬取与存储(基础)