解析方式: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的更多相关文章

  1. python爬虫:XPath语法和使用示例

    python爬虫:XPath语法和使用示例 XPath(XML Path Language)是一门在XML文档中查找信息的语言,可以用来在XML文档中对元素和属性进行遍历. 选取节点 XPath使用路 ...

  2. Python爬虫之xpath语法及案例使用

    Python爬虫之xpath语法及案例使用 ---- 钢铁侠的知识库 2022.08.15 我们在写Python爬虫时,经常需要对网页提取信息,如果用传统正则表达去写会增加很多工作量,此时需要一种对数 ...

  3. 非常全的一份Python爬虫的Xpath博文

    非常全的一份Python爬虫的Xpath博文 Xpath 是 python 爬虫过程中非常重要的一个用来定位的一种语法. 一.开始使用 首先我们需要得到一个 HTML 源代码,用来模拟爬取网页中的源代 ...

  4. 【python爬虫】Xpath

    一.xml是什么 1.定义:可扩展标记性语言 2.特点:xml的是具有自描述结构的半结构化数据. 3.作用:xml主要设计宗旨是用来传输数据的.他还可以作为配置文件. 二.xml和html的区别 1. ...

  5. python爬虫中XPath和lxml解析库

    什么是XML XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 的标签需要 ...

  6. python爬虫--用xpath爬豆瓣电影

    步骤 将目标网站下的页面抓取下来 将抓取下来的数据根据一定规则进行提取   具体流程 将目标网站下的页面抓取下来 1. 倒库 import requests 2.头信息(有时候可不写) headers ...

  7. Python爬虫:Xpath语法笔记

    一.选取节点 常用的路劲表达式: 表达式 描述 实例   nodename 选取nodename节点的所有子节点 xpath(‘//div’) 选取了div节点的所有子节点 / 从根节点选取 xpat ...

  8. python爬虫之xpath的基本使用

    一.简介 Xpath是一门在XML文档中查找信息的语言.Xpath可用来在XML文档中对元素和属性进行遍历.Xpath是W3C XSLT标准的主要元素,并且XQuery和XPointer都构建于XPa ...

  9. Python 爬虫知识点 - XPath

    http://cuiqingcai.com/2621.html 一.基础介绍 <bookstore> <book> <title>Harry Potter</ ...

  10. python爬虫-使用xpath方法

    #coding=utf-8 import re from lxml import etree import requests response = requests.get("http:// ...

随机推荐

  1. RuntimeError: Expected object of backend CUDA but got backend CPU for argument #4 'mat1'

    原因:变量没有加cuda data=data.cuda()

  2. JAVA 学习打卡 day1

    2022-04-21 21:03:26 1.java程序的注释 (1)单行注释,就是在注释内容前面加双斜线(//) (2)多行注释,就是在注释内容前面以单斜线加一个星形标记(/*)开头,并在注释内容末 ...

  3. C# DevExpress gridview 字符串尾部带数字如何排序

    我们经常遇到这样的问题,字符串尾部带数字,如何正确排序; 首先设置GridView ,Columns 的相关列,设置属性中,SortMode为Custom 解决思路,把字符串尾缀数字,分离出来.先比较 ...

  4. Centos 配置网络自启和静态IP和主机名

    1. 修改配置文件 vim /etc/sysconfig/network-scripts 2. vim /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPR ...

  5. C# EF框架的入门使用

    如何构建数据模型 新建项 ADO.NET 实体模型 设置链接 链接字符串需要选择"是,包含敏感数据 注意:EF的框架引用的表应该要存在主键,程序引用中要包含 using System.Dat ...

  6. 关于Unity 图片队列存储以及出列导致内存溢出的解决方案

    图片虽然出列但是并没有销毁,所以..destroy !  

  7. [转]sublime text 4注册

    1.打开浏览器进入网站https://hexed.it2.打开sublime text4安装目录选择文件sublime_text.exe3.搜索80 78 05 00 0f 94 c1更改为c6 40 ...

  8. loadrunner添加头部

    web_add_auto_header("token_id", "{token_id}"); 或 web_add_header("token_id&q ...

  9. OSPF V3协议简介

     LSA1/LSA 2在ospfv3中,变成了只携带拓扑信息,区域内的路由信息注意到LSA 9中

  10. Java所用相关软件的大致安装流程

    JAVA下载流程 一.相关环境的安装与配置 1.JDK的下载 去官网搜索相应的java版本,并进行下载 官网链接:www.xfdown.com/soft/125774.html在该链接下,可以下载ja ...