python爬虫之bs4解析和xpath解析
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解析相关推荐
- Python爬虫:bs4解析
Python爬虫:bs4解析 html语法 什么是bs4 bs4安装 从bs4中查找数据的方法 bs4的基本使用 实例:使用bs4爬取优美图库图片 思路 代码 html语法 <标签 属性=&qu ...
- python爬取网页表格数据匹配,python爬虫——数据爬取和具体解析
标签:pattern div mat txt 保存 关于 json result with open 关于正则表达式的更多用法,可参考链接:https://blog.c ...
- python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程
python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程 前言 一丶整体思路 二丶遇到的问题 三丶分析URL 四丶解析页面 五丶写入文件 六丶完整代码 七丶最后 前言 大家好我是墨绿 头顶总 ...
- Python爬虫学习之数据提取(XPath)
Python爬虫学习之数据提取XPath 概述 常用规则 运算符及介绍 准备工作 实例 文本获取 属性获取 属性值匹配 属性多值匹配 多属性匹配 按序选择 概述 XPath的全称是XML Path L ...
- python爬虫之bs4模块(超详细)
python爬虫之bs4模块(超详细) 一.bs4简介 二.使用方法 三.BeautifulSoup四大对象种类 (1)tag (2)NavigableString (3)BeautifulSoup ...
- Python 爬虫找到数据了 re XPath requests Pool
Python 爬虫找到数据了 re & XPath & requests & Pool 2018.06.16 23:18 88浏览 字号 是的,爬虫就是为了获取数据.在获取的数 ...
- 小白学 Python 爬虫(20):Xpath 进阶
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- python爬虫正则解析及xpath解析,lxml解析库
正则解析模块re re模块使用流程 方法一 r_list=re.findall('正则表达式',html,re.S) 方法二 # 1.创建正则编译对象 pattern = re.compile('正则 ...
- Python爬虫初学三(网络数据解析)
目录 1.学习正则表达式的原因 2.什么是正则表达式 3.正则表达式匹配规则 4.正则实现步骤 5.Pattern 对象 6.正则模块常量 7.Match 对象 8.search 9.findall和 ...
- 数据解析学习笔记(正则解析、bs4解析、xpath解析)
聚焦爬虫:爬取页面中指定的页面内容. - 编码流程: - 指定url - 发起请求 - 获取响应数据 - 数据解析 - 持久化存储 数据解析分类: 正则 bs4 xpath(***) 数据解析原理概述 ...
最新文章
- Openresty (nginx + lua)
- Servlet 表单数据
- 『操作系统』 进程的描述与控制 Part 1 前驱图与程序执行
- appium===setup/setupclass的区别,以及@classmathod的使用方法
- 博客堂joycode被黑掉了
- wpf ListView圆角
- 华为云计算HCIE学习笔记-FusionAccess
- 国家统计局全国统计用区划代码和城乡划分代码Python爬虫样例
- mac分区后数据丢失怎么恢复?
- 微信小程序 java民宿客房预订系统springboot
- 从零开始实现mini-min网易云音乐(一)
- Java使用Netty实现Modbus-RTU通信协议
- 第14章 数据仓库与数据挖掘
- 布袋除尘器过滤风速多少_太原布袋式除尘器过滤风速一般多大
- Mac 安装natapp
- [源码]Meepo路由
- route和bridge是什么意思_vue-router中router和route的区别
- .NET 技术FAQ
- 英雄联盟也能作为作文素材
- 我不知道如何使用这台计算机用英语怎么说,我不知道英文
热门文章
- 邵阳计算机学院高考班成绩,邵阳这个学校出了一个“牛班”,“火箭班”考生本科上线率100%!...
- linux 光盘刻录命令,Linux命令刻录光盘
- 2022-02-05大数据学习日志——Hadoop离线阶段——Hive SQL DDL
- php多张图片下载(zip压缩)
- TensorFlow ERROR:Resource temporarily unavailable
- 大数据可视化应用_在数据可视化中应用种族平等意识
- Python爬虫入门教程 7-100 蜂鸟网图片爬取之二
- Meltdown Spectre原理简要梳理
- Meltdown Attack
- Python自定义豆瓣电影种类,排行,点评的爬取与存储(基础)