【Python爬虫(一)】XPath
解析方式:XPath
XPath的基本使用
1 安装lxml库
conda install lxml
下载慢的话可以试一下热点或切换下载源
2 导入etree
from lxml import etree
3 XPath解析文件
①本地html文件
html_tree = etree.parse('xx.html')
②服务器文件
html_tree = etree.HTML(response.read().decode('utf-8'))
4 html_tree.xpath()
html_tree.xpath()
XPath基本语法
1 路径查询
//:查找所有子孙节点,不考虑层级关系
/:找直接字节点
2 谓词查询
//div[@id='']
//div[@class='']
3 属性查询
//@class
4 模糊查询
//div[contains(@id, '')]
//div[starts-with(@id, '')]
5 内容查询
text()
6 逻辑运算
//div[@id='' and @class='']
//title || //price
实例1:使用XPath获取本博客首页的随笔标题
import urllib.request
from lxml import etree
url = 'https://www.cnblogs.com/tod4/'
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,'
'application/signed-exchange;v=b3;q=0.9',
# 'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'cache-control': 'max-age=0',
'cookie': 【自己的Cookie信息】,
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="102", "Microsoft Edge";v="102"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.39',}
# 请求对象的定制
request = urllib.request.Request(url=url, headers=headers)
# 模拟浏览器向服务器发送数据
response = urllib.request.urlopen(request)
# 获取网页源码
context = response.read().decode('utf-8')
# xPath解析服务器响应文件
tree = etree.HTML(context)
# 获取想要的数据
result_list = tree.xpath("//a[@class='postTitle2 vertical-middle']/span/text()")
for result in result_list:
print(str(result).strip())
输出:
【读书笔记】【Spring实战】二 装配Bean
【图像分类网络(一)】残差神经网络ResNet以及组卷积ResNeXt
pytorch图像处理基础
【Vue】Vuex
【Vue】三
【Vue】二
【Vue】一
【MyBatis】分页插件
【Mybatis】(一)
【SpringMVC】(三)
实例2:下载豆瓣图片

脚本代码
import os
import urllib.request
from lxml import etree
url = 'https://www.douban.com/doulist/136189091/'
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
# 'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'Connection': 'keep-alive',
'Cookie': 【自己的Cookie信息】,
'Host': 'www.douban.com',
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="102", "Microsoft Edge";v="102"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'none',
'Sec-Fetch-User': '?1',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.39',
}
request = urllib.request.Request(url=url, headers=headers)
response = urllib.request.urlopen(request)
context = response.read().decode('utf-8')
tree = etree.HTML(context)
img_src_list = tree.xpath("//div[@class='post']/a/img/@src")
img_name_list = tree.xpath("//div[@class='title']/a/text()")
print(len(img_src_list))
print(len(img_name_list))
if not os.path.exists('./image'):
os.mkdir('./image')
for index in range(len(img_src_list)):
img_src = str(img_src_list[index]).strip()
img_name = str(img_name_list[index]).strip()
img_path = './image/' + img_name + '.png'
# 下载图片
urllib.request.urlretrieve(img_src, img_path)
结果:

【Python爬虫(一)】XPath的更多相关文章
- python爬虫:XPath语法和使用示例
python爬虫:XPath语法和使用示例 XPath(XML Path Language)是一门在XML文档中查找信息的语言,可以用来在XML文档中对元素和属性进行遍历. 选取节点 XPath使用路 ...
- Python爬虫之xpath语法及案例使用
Python爬虫之xpath语法及案例使用 ---- 钢铁侠的知识库 2022.08.15 我们在写Python爬虫时,经常需要对网页提取信息,如果用传统正则表达去写会增加很多工作量,此时需要一种对数 ...
- 非常全的一份Python爬虫的Xpath博文
非常全的一份Python爬虫的Xpath博文 Xpath 是 python 爬虫过程中非常重要的一个用来定位的一种语法. 一.开始使用 首先我们需要得到一个 HTML 源代码,用来模拟爬取网页中的源代 ...
- 【python爬虫】Xpath
一.xml是什么 1.定义:可扩展标记性语言 2.特点:xml的是具有自描述结构的半结构化数据. 3.作用:xml主要设计宗旨是用来传输数据的.他还可以作为配置文件. 二.xml和html的区别 1. ...
- python爬虫中XPath和lxml解析库
什么是XML XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 的标签需要 ...
- python爬虫--用xpath爬豆瓣电影
步骤 将目标网站下的页面抓取下来 将抓取下来的数据根据一定规则进行提取 具体流程 将目标网站下的页面抓取下来 1. 倒库 import requests 2.头信息(有时候可不写) headers ...
- Python爬虫:Xpath语法笔记
一.选取节点 常用的路劲表达式: 表达式 描述 实例 nodename 选取nodename节点的所有子节点 xpath(‘//div’) 选取了div节点的所有子节点 / 从根节点选取 xpat ...
- python爬虫之xpath的基本使用
一.简介 Xpath是一门在XML文档中查找信息的语言.Xpath可用来在XML文档中对元素和属性进行遍历.Xpath是W3C XSLT标准的主要元素,并且XQuery和XPointer都构建于XPa ...
- Python 爬虫知识点 - XPath
http://cuiqingcai.com/2621.html 一.基础介绍 <bookstore> <book> <title>Harry Potter</ ...
- python爬虫-使用xpath方法
#coding=utf-8 import re from lxml import etree import requests response = requests.get("http:// ...
随机推荐
- 转载一个很强大的GIT存储库学习链接
https://learngitbranching.js.org/?locale=zh_CN 可以按照步骤一步步学习相关的知识点
- linux 文件系统和包管理工具rpm,yum
文件系统 1.什么是文件系统? 文件系统是一种存储和组织计算机中数据文件的机制或方法,他使得对计算机内的数据的存储.访问和查找变得更容易,简单. 文件系统落到计算机里其实就是一个应用软件 ext2 e ...
- P2504 聪明的猴子
题目描述 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水面上.猴子不会游泳,但跳跃能力比较强,它们仍然可以 ...
- 与用户交互 Scanner
与用户交互 Scanner Scanner对象 Java提供了一个工具类,可以用以获取用户的输入.java.util.Scanner 是Java5的新特征 基本语法 Scanner s = new S ...
- (四).JavaScript的循环结构
2.2 循环嵌套 ①.语法 // 嵌套循环:循环内部包裹其他的循环 // 外侧循环执行一次,内部循环执行一轮 // 实例 for (var i = 0; i < 5; i++) { for (v ...
- C++11:初始化列表
在老版本的C++中,我们可以比较方便得对结构体.数组等对象利用{}进行初始化,而类变量的初始化则取决于构造函数的形式,例如: struct A { int a, b, c; }; class Foo ...
- Spring Framework学习总结
一.Spring 概述 Spring 有两个核心部分: IoC 和 AOP. Spring 是一种基于 Bean 的编程技术,它深刻地改变着 Java 开发世界.Spring 使用简单.基本的 Jav ...
- RK3399编译——基于nanoPC-T4
开发环境搭建 安装依赖 sudo apt install -y bison g++-multilib git gperf libxml2-utils make python-networkx zip ...
- Codeforces Round #857 Div.1/Div.2 CF1801/1802 2A~2F 题解
点我看题(Div2) Div 2A. Likes 如果要赞最多,肯定是先放所有的点赞,再放所有移除的操作.如果要最少,那就先把赞分成两种:最后被移除的和没被移除的:最后先放所有被移除的,放一个移除一个 ...
- springboot条件注册Condition注解
环境识别 import org.springframework.context.annotation.Condition; import org.springframework.context.ann ...