爬虫学习建议:

在编写python爬虫程序时,只需要做以下两件事:

  • 发送GET请求,获取HTML   [第一类]
  • 解析HTML,获取数据           [第二类]

这两件事,python都有相应的库帮你去做,你只需要知道如何去用它们就可以了。

爬虫目前涉及两种一是获取网页类的如urllib库,requests库,对网页进行获取,获取内容,保存,响应等。

二、解析网页内容:是网页中有很多内容,爬虫的本质是选择我需要的内容,例如我只想网页中的一部分图片,一部分视频或者一部分特殊的内容,这个选择的“部分”主要有1.正则表达式  2.xpath 3.BeautifulSoup 4.jsonparh   5.selenium

前期练习的时候,可以使用requests库+正则表达式  进行练习

后期使用的过程中,建议requests库+xpath库+Xpath Helper【浏览器工具】

工作中建议重点:requests库+xpath库+Xpath Helper【浏览器工具】+selenium结合使用

个人建议:

背景内容:

Python爬虫中Xpath的用法,相信每一个写爬虫、或者是做网页分析的人,都会因为在定位、获取XPath路径上花费大量的时间,在没有这些辅助工具的日子里,我们只能通过搜索HTML源代码,定位一些id,class属性去找到对应的位置,非常的麻烦,

一款插件Chrome中的一种爬虫网页解析工具:XPath Helper
XPath Helper插件是一款免费的Chrome爬虫网页解析工具,可以帮助用户解决在获取XPath路径时无法正常定位等问题

安装了XPath Helper后就能轻松获取HTML元素的XPath,该插件主要能帮助我们在各类网站上查看的页面元素来提取查询其代码,同时我们还能对查询出来的代码进行编辑,而编辑出的结果将立即显示在旁边的结果框中,也很方便的帮助我们判断我们的XPath语句是否书写正确

1.Xpath Helper的安装【工具的安装】

在网上找到的下载地址,你可以根据实际情况进行下载

https://chrome.zzzmh.cn/info/hgimnogjllphhhkhlmebbmlgjoejdpjl

安装完毕后,在需要匹配数据的页面处,使用快捷键打开助手工具(快捷键:ctrl+shift+x)

2.Xpath Helper使用

涉及到的素材仅限于学习---仅限于学习---

把刚刚复制的xpath内容复制到Xpath Helper工具中,观察结果



3.xpath的语法

XPath(XML Path Language - XML路径语言),它是一种用来确定XML文档中某部分位置的语言。
Xpath以XML为基础,提供用户在数据结构树中寻找节点的能力,Xpath被很多开发者亲切的称为小型查询语言。

xpath可以使用路径表达式在XML上选取节点,从而达到确认元素的目的,我们先来介绍以下语法规则

语法规则:

表达式 作用
nodename 选取此层级节点下的所有子节点
/ 代表从根节点进行选取
// 可以理解为匹配,就是在所有节点中选取此节点,直到匹配为止
. 选取当前节点
选取当前节点上一层(上一级目录)
@ 选取属性(也是匹配)

 标签定位:

方式 效果
/html/body/div 表示从根节点开始寻找,标签与标签之间/表示一个层级
/html//div 表示多个层级 作用于两个标签之间(也可以理解为在html下进行匹配寻找标签div)
//div 从任意节点开始寻找,也就是查找所有的div标签
./div 表示从当前的标签开始寻找div

属性定位

需求 格式
定位div中属性名为href,属性值为‘www.baidu.com’的div标签 @属性名=属性值
href为属性名 'www.baidu.com’为属性值 /html/body/div[href=‘www.baidu.com’]

 索引定位

定位ul下第二个li标签(下图) //ul/li[2]
索引值开始位置为 1

取文本内容

方法 效果
/text() 获取标签下直系的标签内容
//text() 获取标签中所有的文本内容
string() 获取标签中所有的文本内容


4.python中使用

使用步骤:

1.安装lxml库

pip install lxml

2.导入lxml

from lxml import etree

3.解析文件

3.1解析本地文件(离线文件)

html_tee=etree.parse("xxx.html")

3.2解析网络文件 (互联网网址)系统自带urllib库

html_tee=etree.HTML(response.read().decode("utf-8"))

3.3如果是respones库

import requests
response = requests.get(url=f'http://www.baidu.com', headers=headers)

#可选步骤,如果网页是gb2312编码的就是修改这里,不然不需要添加

response .encoding='gb2312'

html_tee=etree.HTML(response.text)

4.加载文件

重要的就是xpath规则的编写,这个规则也很简单,掌握如下就是满足爬虫的使用了

xpathguize="//div[@class="info-con pd20"]//img/@src"

html_tee.xpath(xpathguize)



5补充规则的编写:

1.如何定位到元素,下面“5.2网络源码样式”,如何找img这里的src里面的图片地址

5.1  F12 调出网页源码(或者右键网页选择‘检查’),选择一个你需要的额图片右键

下面的元素选择,在右边就是显示你需要的 xpath了

调出xpath、浏览器工具,修改你需要的样式,同时可以在右边查看是否选择正确

选择的重要点 :



xpath中充分掌握下面的1和2就是可以写出不错的xpath规则了,可以满足大部分的需求了

1.定位,用属性定位 

//div[@class="box box-blue-bold"]//li//img//@src

//div[@class="box box-blue-bold"]//li//img//@src

说明:定位就是找到网页中的你要的元素的起始位置---定位作用

[@class="box box-blue-bold"]===就是用 class来定位标签,

经常使用的是 @id=“xxx” 和@class=“xxx”

如:div[@class="box box-blue-bold"],div[@id="con_latest_1"]

2.获取元素属性内容--需要的内容,一般图片地址,视频地址居多

//div[@class="box box-blue-bold"]//li//img//@src

<img referrerpolicy="no-referrer" src="https://img.mandudu.com/s/20221210135913192992.jpg" alt="三体" width="120px" height="170px">
    </picture>

/@src 就是获取img的src的连接地址信息,可以获取图片地址信息“"https://img.mandudu.com/s/20221210135913192992.jpg”



5.2网络网页源码样式:

<li><a class="play-pic" href="/donghuapian/155272.html" target="_blank" rel="nofollow"><picture><source referrerpolicy="no-referrer" type="image/webp"srcset="https://p0.pipi.cn/mmdb/25bfd65111e33867cbb860d07090375118263.jpg?imageView2/1/w/300/h/414/q/80"><img referrerpolicy="no-referrer" src="https://img.mandudu.com/s/20221210135913192992.jpg" alt="三体" width="120px" height="170px"></picture>
</a><label class="pf">0</label><label class="bg"></label><label class="time">更新3集</label><p><a href="/donghuapian/155272.html" target="_blank">三体</a></p><span></span><p class="actor">剧情 / 科幻 / 动画</p>
</li>

爬虫内容学习-工具类---xpath-1相关推荐

  1. SpringBoot 文件上传 基于MD5 文件内容校验工具类

    1.业务场景:实现文件上传功能时.我们需要校验上传文件在传输过程中是否被注入脚本或者是被修改,所有采用md5 算法+ 文件内容生成一个识别码,传递给后端,让后端判断文件是否发生修改或变更. impor ...

  2. 正则匹配英文括号( 中文括号【 里面的内容 封装工具类

    前言 日常开发中遇到的一个需求: String msg="这是一个字符串,括号在后面(这是括号里面的内容,你能把我取出来吗?),括号在前面,第二个括号(咋咋咋),第三个括号[这是中文中括号] ...

  3. 对比文本 python学习 工具类代码

    源代码: import difflib import sysdef readfile(filename):try:fileHandle = open(filename, 'r+')text = fil ...

  4. Java网页爬虫--基于URLConnection的网页爬虫工具类

    在这个数据为王的时代,爬虫应用地越来越广泛,对于一个萌新程序员来说如果你要做爬虫,那么Python是你的不二之选.但是对于那些老腊肉的Java程序员(亦或者你是程序媛)想使用Java做爬虫也不是不行, ...

  5. java的json解析工具_json文件解析工具类(java)

    附上java解析json文件内容的工具类 1.工具类 import com.alibaba.fastjson.JSONObject; import org.slf4j.Logger; import o ...

  6. 【转载】Java文件编码自动转换工具类

    本篇随笔主要介绍了一个用java语言写的将一个文件编码转换为另一个编码并不改变文件内容的工具类: 通过读取源文件内容,用URLEncoding重新编码解码的方式实现. 1 public class C ...

  7. JSON内容对比工具

    一款基于Java的JSON内容对比工具类,结合Jackson一起使用 Maven依赖: <dependency><groupId>com.flipkart.zjsonpatch ...

  8. JAVA常用工具类(实用高效)

    JAVA常用工具类(根据GITHUB代码统计) 从Google你能搜索到大量的关于Struts,Spring,Hibernate,iBatis等比较大的框架的资料,但是很少有人去关注一些小的工具包,但 ...

  9. (6)常用的Java工具类

    目录 前言: 第一部分:常用的16个工具类 一.org.apache.commons.io.IOUtils 二.org.apache.commons.io.FileUtils 三.org.apache ...

最新文章

  1. Concurrency Runtime in Visual C++ 2010
  2. python3 x完全兼容_【转】Python3.x与Python2.x的主要区别 (O_O )?
  3. FFT对信噪比的增益计算
  4. React Native布局详细指南
  5. 最全 Prometheus 踩坑集锦
  6. Java解压上传zip或rar文件,并解压遍历文件中的html的路径
  7. C4C HTML mashup debug
  8. 大学期末考java编程题_大学java期末考试考试题和答案
  9. 有关javaScript面向对象和原型笔记
  10. Q4_一个事物领导另一个
  11. Learn the object-c on MAC(中译本: Object-C 基础教程 ) 学习笔记
  12. 深入理解Oracle Exadata
  13. 关于win10 64位安装 XP 32位注意事项
  14. 为什么这么好玩?领略《塞尔达传说:旷野之息》精妙设计(上)
  15. 图像的数字化(以某化探异常图为例——地球物理)
  16. 上海市申请享受生育保险待遇的程序
  17. python 高德地图
  18. 产品之路第四年的再思考
  19. Excel如何条件求和
  20. docker(ELK) - logstash-elasticsearch-kibana

热门文章

  1. 查手机服务器ip和端口网站,手机怎么看ip和端口
  2. 北京交通大学计算机仿真大作业直流调速系统仿真,北京交通大学电气工程学院计算机仿真大作业.docx...
  3. 【Python 百炼成钢】进制转换、特殊回文数、水仙花数、杨辉三角、字母图形、01字符串、回形取数、排他方数、世纪末的星期日、约瑟夫环
  4. 用函数计算两数之和和两数之积
  5. 微信小程序表格实现隔行换色
  6. Arthur van Hoff
  7. 游戏蓝牙耳机哪款好?2021商城最佳人气五款蓝牙耳机推荐
  8. PHP检测字数,PHP获取word文档字数的问题
  9. spark RDD算子大全
  10. 华为怎么显示返回按键_苹果手机为何一直没有“返回键”?其实乔布斯生前就说出了答案!...