Java面试黄金宝典46

1. Python 如何写爬虫

 

  • 定义:Python 爬虫是借助 Python 语言编写程序,模拟浏览器行为向目标网站发送 HTTP 请求,获取网页内容,再通过解析工具提取所需数据的程序。其本质是自动化的数据采集过程。
  • 要点
    • 发送请求:利用requests库发送 HTTP 请求,如 GET、POST 等,获取网页 HTML 内容。
    • 解析数据:运用BeautifulSouplxml等库解析 HTML,提取所需信息。
    • 处理反爬虫:设置请求头、使用代理 IP、控制请求频率等绕过网站反爬虫机制。
    • 数据存储:将提取的数据存储到文件(如 CSV、JSON)或数据库(如 MySQL、MongoDB)中。
  • 应用:在信息收集、舆情监测、电商价格监控、搜索引擎数据抓取等场景广泛应用。
  • Python 代码示例

python

import requests
from bs4 import BeautifulSoupurl = 'https://www.example.com'
headers = {'User - Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
links = soup.find_all('a')
for link in links:print(link.get('href'))

 

2. Python 全局锁

 

  • 定义:Python 全局解释器锁(Global Interpreter Lock,GIL)是 Python 解释器中的一个互斥锁,确保同一时刻只有一个线程在解释器中执行 Python 字节码,以此保障 Python 内存管理的线程安全。
  • 要点
    1. 仅影响 CPU 密集型多线程程序,对 I/O 密集型程序影响不大。
    2. 多进程可绕过 GIL 限制,因每个进程有独立的解释器和 GIL。
  • 应用:在编写 Python 多线程程序时,需考虑 GIL 影响。CPU 密集型任务适合用多进程,I/O 密集型任务多线程仍可提升效率。
  • Python 代码示例(对比多线程和多进程)

python

import threading
import multiprocessing# CPU 密集型任务
def cpu_intensive_task():result = 0for i in range(10**7):result += ireturn result# 多线程
threads = []
for _ in range(4):t = threading.Thread(target=cpu_intensive_task)threads.append(t)t.start()
for t in threads:t.join()# 多进程
processes = []
for _ in range(4):p = multiprocessing.Process(target=cpu_intensive_task)processes.append(p)p.start()
for p in processes:p.join()

 

3. Python 爬虫分为哪几种,分别是什么

 

  • 定义
    1. 通用爬虫:能抓取整个互联网网页的爬虫程序,通常由搜索引擎公司使用,按特定规则遍历网页并存储内容,供后续索引和搜索。
    2. 聚焦爬虫:只抓取与特定主题相关网页的爬虫,专注于获取特定领域的信息。
    3. 增量式爬虫:仅抓取网页中发生变化部分的爬虫,避免重复抓取相同内容,提高爬取效率。
    4. 深层爬虫:深入网页内部链接,抓取更深入层次内容的爬虫。
  • 要点:不同类型爬虫根据功能和应用场景区分,

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

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

相关文章

建设“大数据智慧招商平台”,助力园区突破招商瓶颈!

在数字经济高速发展的今天,传统招商模式正面临信息不对称、效率低下、匹配不精准等瓶颈。产业园区作为区域经济发展的核心载体,亟需借助智能化手段提升招商效能。构建大数据智慧招商平台,利用大数据、人工智能等技术获取精准招商线索、促进产…

Vue事件修饰符课堂练习

Vue事件修饰符课堂练习 题目‌:基于 Vue 2.0,使用事件修饰符 .stop、.prevent、.capture、.self 和 .once,为按钮绑定 click 事件,并展示每个修饰符的作用。 要求‌: 创建一个 Vue 实例,并绑定到一个 HT…

【C#】线程回调

在 C# 中,线程回调是一种常见的编程模式,用于在线程完成任务后执行某些操作。通过使用 Thread 类或其他更高层次的并发工具(如 Task),可以实现线程回调的功能。 回调机制 特点 直接性:回调通常是通过委托…

【C++游戏引擎开发】第14篇:视图空间与相机坐标系

一、视图空间的基础数学框架 1.1 齐次坐标与变换矩阵 三维坐标系变换采用44齐次坐标矩阵,其通用形式为: M = [ A 3 3 b 3 1 0 1 3 1 ] \mathbf{M} = \begin{bmatrix} \mathbf{A}_{33} & \mathbf{b}_{31} \\ \mathbf{0}_{13} & 1 \end{bmatrix} M=[A33​013​​…

【大模型理论篇】关于生成式模型中联合分布概率学习必要性以及GPT是生成式模型的讨论

1. 背景 之前我们在《生成式模型与判别式模型对比(涉及VAE、CRF的数学原理详述)》以及《生成式模型算法原理深入浅出(涉及Stable Diffusion、生成对抗网络、高斯混合模型、隐马尔可夫模型、朴素贝叶斯等算法原理分析及生成式模型解释)》中,我…

DIP支付方式改革下各种疾病医疗费用的影响以及分析方法研究综述

DIP支付方式改革下各种疾病医疗费用的影响以及分析方法研究综述 摘要 本文综述了DIP支付方式改革对不同疾病医疗费用的影响及其分析方法,通过分析12篇相关文献,探讨了DIP支付方式在控制医疗费用、优化费用结构、提升医疗服务效率等方面的作用及其局限性…

嵌入式硬件篇---单片机周期

文章目录 前言 前言 在单片机中,时序控制是其执行指令和协调外设的核心基础。以下是单片机中常见的各种周期及其详细说明,以层次结构展开: 时钟周期(Clock Cycle) 定义: 时钟周期是单片机的最小时间单位&a…

游戏引擎学习第221天:(实现多层次过场动画)

资产: intro_art.hha 已发布 在下载页面,你会看到一个新的艺术包。你将需要这个艺术包来进行接下来的开发工作。这个艺术包是由一位艺术家精心制作并打包成我们设计的格式,旨在将这些艺术资源直接应用到游戏中。它包含了许多我们会在接下来的直播中使用…

【3GPP核心网】【5G】精讲5G系统的策略和计费控制框架

1. 欢迎大家订阅和关注,精讲3GPP通信协议(2G/3G/4G/5G/IMS)知识点,专栏会持续更新中.....敬请期待! 目录 1. 系统架构 1.1 非漫游架构 1.2 漫游架构 1.3 支持Rx接口 2. 服务化接口及参考点 2.1 PCF 与 AF 间接口 2.2 PCF与SMF间接口 2.3 PCF与AMF间接口 2.4 V-PC…

榕壹云门店管理系统:基于Spring Boot+Mysql+UniApp的智慧解决方案

项目背景:数字化赋能服务行业,破解传统门店管理痛点 在消费升级与数字化转型浪潮下,传统服务行业(如美容、美发、美甲、采耳等)面临诸多管理挑战:会员流失率高、预约排班混乱、员工绩效统计低效、数据孤岛等…

开发效率提升200%——cursor

cursor带来的编程"革命" 高级语言编程转为"自然语言编程"借助cursor,直接超越初级后台开发、超越初级前端开发、超越初级测试、超越初级UI,产研一体linux命令只用学不用记,语言描述就是命令给一个表结构流程提示词&…

UE4 踩坑记录

1、Using git status to determine working set for adaptive non-unity build 我删除了一个没用的资源,结果就报这个错,原因就是这条命令导致的, 如果这个项目是git项目, ue编译时会优先通过 git status检查哪些文件被修改&#…

蓝桥杯 2025 C++组 省 B 题解

可分解的正整数 算法&#xff1a;思维 因为可以有负数 所以除了1以外的任何数都可以构造 当这个数为x构造方法为 -(x-1) -(x-2) -(x-3) ....-1 0 1...x-3 x-2 x-1 x 除了x&#xff0c;x以前的数都会被负数抵消 #include <bits/stdc.h> #define ll long long ll a…

docker创建容器添加启动--restart选项

一、通过 Docker 命令直接修改已启动的容器&#xff08;推荐-已验证&#xff09; 操作步骤&#xff1a; 1.执行更新命令&#xff1a; docker update --restartalways <容器名或ID>此命令会将容器的重启策略调整为 always&#xff08;无论容器以何种状态退出&#xff0…

redission锁释放失败处理

redission锁释放失败处理 https://www.jianshu.com/p/055ae798547a 就是可以删除 锁的key 这样锁就释放了&#xff0c;但是 还是要结合业务&#xff0c;这种是 非正规的处理方式&#xff0c;还是要在代码层面进行处理。

【语音识别】vLLM 部署 Whisper 语音识别模型指南

目录 1. 模型下载 2. 环境安装 3. 部署脚本 4. 服务测试 语音识别技术在现代人工智能应用中扮演着重要角色&#xff0c;OpenAI开源的Whisper模型以其出色的识别准确率和多语言支持能力成为当前最先进的语音识别解决方案之一。本文将详细介绍如何使用vLLM&#xff08;一个高…

Windows Server 2019 安装 Docker 完整指南

博主本人使用的是离线安装 1. 安装前准备 系统要求 操作系统&#xff1a;Windows Server 2019&#xff08;或 2016/2022&#xff09;权限&#xff1a;管理员权限的 PowerShell网络&#xff1a;可访问互联网&#xff08;或离线安装包&#xff09; 启用容器功能 Install-Win…

C# 混淆代码工具--ConfuserEx功能与使用指南

目录 1 前言1.1 可能带来的问题 2 ConfuserEx2.1 简介2.2 功能特点2.3 基本使用方法2.4 集成到MSBuild2.5 深入设置2.5.1 保护机制2.5.1.1 ConfuserEx Protection 2.5.2 精细的代码保护主要特性1. decl-type(string)2.full-name(string)3. is-public()4. match(string)5. match…

c# 新建不重名的唯一文件夹

在源文件夹内创建唯一目标文件夹 string newFolder GetUniqueFolderName(sourceFolder); Directory.CreateDirectory(newFolder); /// <summary>/// 生成唯一文件夹名称&#xff08;格式&#xff1a;新建文件夹、新建文件夹1、新建文件夹2...&#xff09;…

3D案例丨多个3D工业相机拼接检测 开启360°新视界

在高速生产线上&#xff0c;经常需要在极短的时间内对工件进行全方位的外观检测&#xff0c;如&#xff1a;线缆直径和直线度检测、锂电池外观缺陷检测、铁轨截面尺寸检测等。 这需要传感器完整还原被测物的截面面轮廓形状&#xff0c;并获取精准的截面轮廓数据。但单一相机的…