Python【xpath】实战案例【中】

news2024/11/15 11:00:03

获取全国地级城市名称:

案例准备:导入外部库 1.requests、2.lxml

容易遇到的问题:网站SSL认证失效

代码块:

#导入第三方库
import requests
from lxml import etree
# 网页地址
url = 'https://www.aqistudy.cn/historydata/'
#U-A伪装
headers = {
    'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Mobile Safari/537.36 Edg/109.0.1518.70'
}
#发起get请求 
page_text =requests.get(url=url,headers=headers,verify=False).text
#页面解析
tree = etree.HTML(page_text)
#xpath语法
ul = tree.xpath('//div[@class="bottom"]/ul//li')
#定义一个空列表准备存储数据
all_city_name = []
#遍历页面数据
for honst_li in ul:
    city_name = honst_li.xpath('./a/text()')[0]
    #将数据添加到定义的空列表中
    all_city_name.append(city_name)
#打印列表中存储的数据
print(all_city_name,len(all_city_name))
问题详解:

你通过网址打开你需要获取数据的网址时会出现以下页面

报错:

requests.exceptions.SSLError: HTTPSConnectionPool(host=‘httpbin.org’, port=443): Max retries exceeded with url: /get (Caused by SSLError(SSLError(1, ‘[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1123)’)))

原因问题:网站运营者近期未对网站安全认证向浏览器官方交付认证,证书认证失效

解决办法: 在发送get请求时添加verify=False,关闭ssl认证

未进行设置证书认证相关参数,默认是Ture 打开认证

page_text =requests.get(url=url,headers=headers).text

关闭ssl认证,verify=False

page_text =requests.get(url=url,headers=headers,verify=False).text

xpath 详解:

//div[@class="bottom"] 表示当前从div这个标签开始获取,而且div的属性class=“bottom”,这种方式也可以叫做标签定位

/ul / 表示下一层标签,/ul 表示下一层标签是ul

//div[@class="bottom"]/ul//li 表示当前从<div class="bottom">开始,下一层标签为<ul>,下下下一层标签是li,这个下下下的意思略过多个书写的标签直接来到了<li>标签

如果我没略过的话应该写成://div[@class="bottom"]/ul/div[2]/li

如果我略过的话应该写成://div[@class="bottom"]/ul//li 我可以省略ul标签不写。如果想要获取的数据和另一个不需要的数据是拿<ul>标签搞区分我们就应该写全,如果像我这样写的话有时就会拿到我们不需要的数据。

for 循环遍历:

为什么我要对<li>标签进行循环遍历,因为我们需要的数据在<li>标签当中,<li>标签又在<ul>标签当中,我们又有好多个<li>标签

ul = tree.xpath('//div[@class="bottom"]/ul//li')

我们通过属性定位先拿到<li>标签

再通过for循环遍历<div>[2]"第二个<div>标签,在第二个<div>中"拿到所有的<li>标签,

拿到一个<li>标签,我们通过xpath语法获取<li>标签中的<a>标签中文本数据,text()就是获取文本数据,后面加上 [0] 是因为文本数据在第一个<a>标签 也就是下标索引。

for honst_li in ul:
    city_name = honst_li.xpath('./a/text()')[0]

如何通过检查工具刨铣网页信息:

我用不同的颜色框起来标签就是属于一个完整的属性标签比如

<ul class = "xxx">

</ul>

我们通过观察完整的标签信息,来确定我们需要的数据到底在那个标签里,比如:

我们需要的数据是<a>标签中的文本数据“阿坝州”,<a>标签在<li>标签中,<li>标签在第二个<div>标签中,<div>[2]又在<ul>标签中,<ul>标签又在大的div这个标签中,而且div的属性class=“bottom”<div class="bottom">

正常xpath语法为://div[@class="bottom"]/ul/div[2]/li/a/text()

总结:

论语二则:

温故而知新,可以为师矣 --《论语》

温习旧的知识,从中获取到新的感悟,凭借这一点就可以给别人传授知识。

人不知而不愠,不亦君子乎--《论语》

别人不知晓自己,不去发火生气,不也是君子道德上的修养吗

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/181678.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SOFA Weekly|SOFANews、issue 精选

SOFA WEEKLY | 每周精选 筛选每周精华问答&#xff0c;同步开源进展欢迎留言互动&#xff5e;SOFAStack&#xff08;Scalable Open Financial Architecture Stack&#xff09;是蚂蚁集团自主研发的金融级云原生架构&#xff0c;包含了构建金融级云原生架构所需的各个组件&#…

论文投稿指南——中文核心期刊推荐(公路运输)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

Linux嵌入式开发——用户与用户组

文章目录Linux嵌入式开发——用户与用户组用户用户组创建用户和用户组1、图形化界面创建2、命令创建添加用户用户查询修改用户密码删除用户添加用户组显示组内用户名删除用户组Linux嵌入式开发——用户与用户组 用户 Linux是一个多用户操作系统&#xff0c;不同的用户拥有不同…

过年回家,你是否也像我一样努力生动的给别人解释软件开发是干啥滴?

这个年就这样&#xff0c;在喜气洋洋的气氛中&#xff0c;在我们依依不舍的留恋中&#xff0c;从我们身边溜走了。这次回家又碰见了亲戚们不厌其烦的问我&#xff0c;你做什么工作呐&#xff1f;于是就有了我以下生动的解释 目录 打字的 帮助传话&#xff0c;帮助卖东西 皮…

亚马逊云科技:强强联合助力中国头部车企打造优质服务体验

2023年1月9日在美国拉斯维加斯刚落幕的国际消费电子展&#xff08;CES 2023&#xff09;上&#xff0c;亚马逊云科技的2位重要合作伙伴BlackBerry和中国领先的车联网&#xff08;IoV&#xff09;技术服务与产品提供商博泰车联网共同宣布&#xff0c;由BlackBerry IVY™赋能的博…

.Net 7 托管Main入口的四种写法(茴香豆?)

前言&#xff1a; 按照CLR的规则,C#托管Main入口其实有四种写法。 写法 第一种&#xff1a;最常见的&#xff0c;也是VS默认的&#xff0c;返回值void,带一个参数 static void Main(string[] args) {Console.Write("Tian xia feng yun chu wo bei");Console.ReadLine…

python图像处理(均值滤波)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在图像处理过程中,一个绕不开的话题就是噪声。其中比较经典的就是椒盐噪声。为了降低这些噪声对最终图像处理效果的影响,人们想了很多的方法,比如说均值滤波、中值滤波、高斯滤波…

java多线程-线程属性

线程属性 线程各属性 线程ID id从 1 开始计数&#xff0c;因为在源码中是如下实现的&#xff0c;初始值设置为0&#xff0c;id是先自增再返回 private volatile int threadStatus 0;private static synchronized long nextThreadID() {return threadSeqNumber; }现在来演示…

处理比赛数据记录

文章目录一、需求二、爬取阶段1.使用requests进行请求获取网页内容2.使用selenium模拟人操作浏览器获取网页内容(1)环境配置(2) 源码3.使用phantomjs模拟人操作浏览器获取网页内容浅浅记录一下自己在做一个比赛数据处理过程中的遇到的一些问题。一、需求 首先数据的格式是长下…

AcWing 1064. 小国王(状态压缩DP)

AcWing 1064. 小国王一、问题二、思路1、整体逻辑2、状态表示3、状态转移4、循环设计5、初末状态三、代码一、问题 二、思路 1、整体逻辑 我们看下面这个例子&#xff1a; 如果我们一行一行放的话。 在上图中&#xff0c;我们先看第二行&#xff0c;我们发现第二行在哪个位…

NR R16 上行满功率传输(ULFPTx)

微信公众号同步更新&#xff0c;欢迎关注同名“modem协议笔记” UL full power Tx(ULFPTx Mode)&#xff0c;上行满功率传输&#xff0c;是R16版本的一个增强&#xff0c;R15由于受限于codebook和PUSCH功率控制&#xff0c;某些情况下无法达到满功率传输&#xff08;例如26dBm…

论文投稿指南——中文核心期刊推荐(建筑科学 2)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

齐晖医药冲刺上市:毛利率持续下滑,刘祥宜和朱建民夫妇为实控人

近日&#xff0c;江苏齐晖医药科技股份有限公司&#xff08;下称“齐晖医药”&#xff09;递交预披露招股书&#xff0c;准备在上海证券交易所主板上市。本次冲刺上市&#xff0c;齐晖医药计划募资6.97亿元&#xff0c;将用于动保原料药生产基地项目、研发中心建设项目&#xf…

“编辑距离”系列总结,一文读懂(Java实现)

目录 一、判断子序列 ——>删除元素 1.1、dp定义 1.2、递推公式 1.3、初始化 1.4、遍历顺序 1.5、解题代码 二、不同的子序列 ——>删除元素 2.1、dp定义 2.2、递推公式 2.3、初始化 2.4、遍历顺序 2.5、解题代码 三、两个字符串的删除操作 ——>删除元素…

设计模式 - 六大设计原则之DIP(依赖倒置原则)

文章目录概述CaseBad ImplBetter Impl概述 设计代码架构时&#xff0c;高层模块不应该依赖于底层模块&#xff0c;二者都应该依赖于抽象。 抽象不应该依赖于细节&#xff0c;细节应该依赖于抽象。 依赖倒置原则是实现开闭原则的重要途径之一&#xff0c; 它降低了类之间的耦合…

代码随想录算法训练营第十天 | 理论基础,232.用栈实现队列,225. 用队列实现栈

一、参考资料理论基础文章讲解&#xff1a;https://programmercarl.com/%E6%A0%88%E4%B8%8E%E9%98%9F%E5%88%97%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 用栈实现队列题目链接/文章讲解/视频讲解&#xff1a;https://programmercarl.com/0232.%E7%94%A8%E6%A0%88%E5%AE%9E%E…

【Linux】多线程详解(上)

&#x1f387;Linux&#xff1a; 博客主页&#xff1a;一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 看似不起波澜的日复一日&#xff0c;一定会在某一天让你看见坚持…

百度2015年系统工程师笔试题:判断当前机器的大小端

本篇文章主要讲解大小端的判断问题&#xff0c;需要拥有指针&#xff0c;位段&#xff0c;联合体的知识。 目录 一.题目呈现 二.三种解题方法 1.巧妙利用指针和强制转换 2.利用位段的特性 3.利用联合体的性质 一.题目呈现 请简述大端字节序和小端字节序的概念&#xff0c;…

剑指 Offer 03. 无重复字符的最长子串 [C语言]

目录题目思路1代码1结果1思路2代码2结果2该文章只是用于记录考研复试刷题题目 Leetcode 03: 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所…

A股上市公司招投标数据

一、数据简介 招投标是指在市场经济条件下进行大宗货物的买卖、工程建设项目的发包与承包以及服务项目的采购与提供时所采取的一种普遍交易方式。招标和投标是一种商品交易行为&#xff0c;是交易过程的两个方面。历经三十多年的发展&#xff0c;我国已经形成了覆盖全国各领域、…