【Python】【进阶篇】五、Python爬虫的抓取网页
目录
- 五、Python爬虫的抓取网页
- 5.1 导入所需模块
- 5.2 获取目标URL地址
- 5.3 向目标URL发送请求
- 5.4 保存为本地文件
- 5.5 优化程序
五、Python爬虫的抓取网页
Python 爬虫应用案例:爬取目标的网页,并将其保存到本地。
对要编写的爬虫程序进行分析,可以简单分为为以下三个部分:
- 目标 url 地址
- 发送请求
- 将响应数据保存至本地
明确逻辑后,我们就可以正式编写爬虫程序了。
5.1 导入所需模块
在这里我们使用标准库 urllib 库来编写爬虫,导入所需模块,代码如下:
from urllib import request
from urllib import parse
5.2 获取目标URL地址
定义 URL 变量,拼接 url 地址,从而获取目标地址。代码如下:
url = 'http://www.baidu.com/s?wd={}'
# 想要搜索的内容
word = input('请输入搜索内容:')
params = parse.quote(word)
full_url = url.format(params)
5.3 向目标URL发送请求
发送请求主要分为以下三个步骤:
- 创建请求对象-Request
- 获取响应对象-urlopen
- 解析响应内容-read
代码如下:
# 重构请求头
headers = {'User-Agent': 'Mozilla/6.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0'}
# 创建请求对应
req = request.Request(url=full_url, headers=headers)
# 获取响应对象
res = request.urlopen(req)
# 解析响应内容
html = res.read().decode("utf-8")
5.4 保存为本地文件
把爬取的照片保存至本地,此处需要使用 Python 编程的文件 IO 操作,代码如下:
filename = word + '.htm'
with open(filename,'w', encoding='utf-8') as f:f.write(html)
完整程序如下所示:
from urllib import request, parse# 1.拼url地址
url = 'http://www.baidu.com/s?wd={}'
word = input('请输入搜索内容:')
params = parse.quote(word)
full_url = url.format(params)
# 2.发请求保存到本地
headers = {'User-Agent': 'Mozilla/6.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0'}
req = request.Request(url=full_url, headers=headers)
res = request.urlopen(req)
html = res.read().decode('utf-8')
# 3.保存文件至当前目录
filename = word + '.htm'
with open(filename, 'w', encoding='utf-8') as f:f.write(html)
5.5 优化程序
Python 函数式编程可以让程序的思路更加清晰、易懂。接下来,使用函数编程的思想更改上面代码。
定义相应的函数,通过调用函数来执行爬虫程序。修改后的代码如下所示:
from urllib import request
from urllib import parse# 拼接URL地址
def get_url(word):url = 'http://www.baidu.com/s?{}'# 此处使用urlencode()进行编码params = parse.urlencode({'wd': word})url = url.format(params)return url# 发请求,保存本地文件
def request_url(url, filename):headers = {'User-Agent': 'Mozilla/6.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0'}# 请求对象 + 响应对象 + 提取内容req = request.Request(url=url, headers=headers)res = request.urlopen(req)html = res.read().decode('utf-8')# 保存文件至本地with open(filename, 'w', encoding='utf-8') as f:f.write(html)# 主程序入口
if __name__ == '__main__':word = input('请录入搜索内容:')url = get_url(word)filename = word + '.htm'request_url(url, filename)
相关文章:
【Python】【进阶篇】五、Python爬虫的抓取网页
目录五、Python爬虫的抓取网页5.1 导入所需模块5.2 获取目标URL地址5.3 向目标URL发送请求5.4 保存为本地文件5.5 优化程序五、Python爬虫的抓取网页 Python 爬虫应用案例:爬取目标的网页,并将其保存到本地。 对要编写的爬虫程序进行分析,可…...
docker安装MongoBD(超详细)
一、安装docker 推荐文章:https://blog.csdn.net/Sumuxi9797926/article/details/127313307?spm1001.2014.3001.5502 二、创建主机挂载配置目录 data目录存放mongodb数据库文件,删除重启容器不会丢失 mkdir -p /docker/mongodb/data && cd …...
6轴陀螺仪姿态解算
之前看过学长姿态解算相关代码,因为要做平衡车的项目,希望陀螺仪处理数据能够达到很好的效果,大概2个星期前,看的学长代码,当时把大部分代码看懂是用来干什么的,但原理还是一窍不通,没办法&…...
提升集群吞吐量与稳定性的秘诀: Dubbo 自适应负载均衡与限流策略实现解析
作者:刘泉禄 整体介绍 本文所说的“柔性服务”主要是指 consumer 端的负载均衡和 provider 端的限流两个功能。在之前的 Dubbo 版本中,负载均衡部分更多的考虑的是公平性原则,即 consumer 端尽可能平等的从 provider 中作出选择,…...
大数据分析工具Power BI(十七):制作过程分析和原因分析图表
制作过程分析和原因分析图表 一、过程分析 过程分析主要分析业务流程中每一步骤的变化情况,用于分析业务流程指标数据变化、拆分业务流程、拆分关键业务指标等等。可以使用漏斗图、瀑布图来展示过程分析数据。 1、漏斗图 漏斗图常用来展示业务过程的线性变化,分析业务流程的转…...
公司“007”式工作的卷王测试员,被辞退了…
上周,公司传出同事小王被开除的消息,震惊了一办公室的人。要知道,小王在办公室素有卷王之称,不仅从没见他6点准点下班过,早上也都第一个到。平时的周报,也都洋洋洒洒的写了5K字之多,他的存在一度…...
C++ Primer第五版_第七章习题答案(1~10)
文章目录练习7.1练习7.2练习7.3练习7.4练习7.5练习7.6练习7.7练习7.8练习7.9练习7.10练习7.1 使用2.6.1节定义的Sales_data类为1.6节的交易处理程序编写一个新版本。 #include <iostream> #include <string> using std::cin; using std::cout; using std::endl; us…...
2023年全国最新保安员精选真题及答案42
百分百题库提供保安员考试试题、保安职业资格考试预测题、保安员考试真题、保安职业资格证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 421.根据《保安服务管理条例》规定,取得《保安员证》的身体条件是&#x…...
通过 DVT 和 dbt 测试监控Airbyte数据管道
为数据复制或数据迁移构建 ELT 数据管道的一个重要部分是能够在出现错误时进行监视并获得通知。如果您不知道错误,您的数据将包含不一致之处,并且您的报告将不准确。由于使用的工具数量众多,大多数管道的复杂性使得设置监视和警报系统更具挑战…...
BootStrap4:组件
一、按钮 1.1、普通按钮 Bootstrap包括多个预定义的按钮样式,每个样式都有自己的语义目的,另外还有一些额外的功能可以用于更多的控制。 样式效果: 源代码: <body class"container"><button type"bu…...
菜鸟也能在10分钟内开发出3D数字化城市,这份干货教程请收好!
朋友被老板要求在2周内负责一个监控用的的3D全景地图项目,他每天能盯着程序员加班加点的干,可按照进度仍然赶不上ddl。我听了他的诉求,联想到之前参加过的一个宣讲会里提到的新软件,把东西推荐给他后,他让同事跑了一下…...
【区块链技术开发】十个比较流行的以太坊智能合约开发框架
专栏:【区块链技术开发】 前期文章: 【区块链技术开发】剖析区块链Ganache模拟器工具及其智能合约部署区块链的查询方式 【区块链技术开发】基于Web3.js以太坊网络上的智能合约的交互及其应用 【区块链技术开发】OpenZeppelin智能合约库:提高智能合约的安全性和可靠性,加速…...
Linux三剑客之grep命令详解
1、概述 Linux三剑客:grep、sed、awk。grep主打查找功能,sed主要是编辑行,awk主要是分割列处理。本篇文章我们详细介绍grep命令。 grep (global search regular expression(RE) and print out the line,全面搜索正则…...
【Python】【进阶篇】二、Python爬虫的User-Agent用户代理
目录二、Python爬虫的User-Agent用户代理2.1 常见的 User-Agent 请求头2.2 爬虫程序UA信息2.3 重构爬虫UA信息二、Python爬虫的User-Agent用户代理 User-Agent 即用户代理,简称“UA”,它是一个特殊字符串头。网站服务器通过识别 “UA”来确定用户所使用…...
ORBSLAM3 --- 双目惯导执行ORBSLAM3(一):Stereo_intertail_euroc.cc文件解析
1.执行双目例程的参数 在Clion中,我们输入以下参数: /home/liuhongwei/Desktop/slam/ORB_SLAM3_detailed_comments-master/Vocabulary/ORBvoc.txt /home/liuhongwei/Desktop/slam/ORB_SLAM3_detailed_comments-master/Examples_old/Stereo-Inertial/EuRo…...
五 MySQL 存储过程
五、企业级开发技术 5.1 存储过程 关于存储过程我只能说请看下图,这是阿里巴巴发布的《阿里巴巴Java开发手册(终极版)v1.3版本》在 MySQL 第七条中强制指出禁止使用存储过程 所以对于存储过程不必深究,做到会写能看懂即可 [外链…...
【指针函数和函数指针】
指针函数和函数指针1. 概述2. 案例分析指针函数函数指针1. 概述 函数指针和指针函数是两个不同的概念。 函数指针是指一个指针变量,该指针变量存储了一个函数的地址。通过函数指针可以实现动态调用函数,根据需要在程序运行时指定要调用的函数。函数指针的…...
实现卡片高度增加时的缓动动画效果
在开发中,我们可能会遇到需要让卡片高度由内容撑起(即不能手动设置height),并且在高度增加时增加缓动动画的需求。本文将介绍几种实现方式。 文章目录方法1:使用CSS的max-height属性和:hover伪类特定例子:鼠…...
什么是HRMS?哪些工作需要使用HRMS?
当今企业的发展离不开技术支持,同样,在管理方面也需要与时俱进,进行数字化转型。人力资源技术的运用是企业管理数字化转型的重要表现之一。在企业选择一款HR软件之前,应该先认识到,什么是人力资源管理软件——即HRMS。…...
【C语言蓝桥杯每日一题】—— 饮料换购
【C语言蓝桥杯每日一题】—— 饮料换购😎前言🙌饮料换购🙌喝汽水问题🙌饮料换购解题源码分享 😊总结撒花💞😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的…...
GIS国土工具实战:从地类分析到坐标转换,一站式解决项目难题
1. GIS国土工具如何解决项目痛点 第一次接触国土整治项目时,我被各种数据格式搞得焦头烂额。早上9点收到甲方发来的50个地块的shp文件,下午3点就要提交带坐标的txt报备文件,中间还要做地类分析和影像核对。手动操作?光是想到要一个…...
Laravel-admin 数据权限审计终极指南:完整权限变更记录解决方案 [特殊字符]️
Laravel-admin 数据权限审计终极指南:完整权限变更记录解决方案 🛡️ 【免费下载链接】laravel-admin Build a full-featured administrative interface in ten minutes 项目地址: https://gitcode.com/gh_mirrors/la/laravel-admin 想要确保你的…...
Simulink里三种TD微分器怎么选?用带噪声的正弦信号实测给你看(附模型)
Simulink中三种TD微分器的工程选型实战指南 从实验室到产线:为什么TD微分器如此重要 在电机控制、机器人导航和工业自动化领域,工程师们经常面临一个共同挑战:如何从带有噪声的传感器信号中准确提取速度信息。编码器、加速度计等传感器输出的…...
科技早报晚报|2026年5月15日:本地大表分析、零 ETL 远程搜索与去中心化监控,今晚更值得跟进的 3 个技术机会
科技早报晚报|2026年5月15日:本地大表分析、零 ETL 远程搜索与去中心化监控,今晚更值得跟进的 3 个技术机会 一句话导读:上午那篇我已经写了空间感知、设备实验室和视频代理,今晚这轮我刻意换到另一条更贴近真实工程预…...
语音提示工程实战:从原理到应用,解锁AI声音表现力
1. 项目概述:语音提示工程的“Awesome”宝库如果你正在探索语音AI的应用,或者想为自己的智能助手、播客、有声书项目寻找更自然、更具表现力的声音,那么你很可能已经意识到一个核心痛点:如何用文字精准地“指挥”一个AI声音&#…...
Excel公式生成黑科技落地实录(ChatGPT+Power Query+LAMBDA三引擎联动)
更多请点击: https://intelliparadigm.com 第一章:Excel公式生成黑科技落地实录(ChatGPTPower QueryLAMBDA三引擎联动) 场景驱动的智能公式生成闭环 当财务团队需在5分钟内为127张销售报表动态生成「跨表多条件加权滚动同比」公…...
电气噪声抑制实战:从原理到电磁屏蔽的电子系统稳定性设计
1. 项目概述:无处不在的“隐形杀手”——电气噪声作为一名在电子硬件开发一线摸爬滚打了十多年的工程师,我处理过无数稀奇古怪的故障。很多时候,问题不是出在核心算法或主控芯片上,而是一个看不见摸不着的“隐形杀手”——电气噪声…...
智能助手会话上下文管理:基于向量检索的长期记忆与多技能协作实践
1. 项目概述与核心价值最近在折腾一个基于大语言模型的智能助手项目,发现一个挺有意思的痛点:如何让AI在持续的对话中,不仅能记住当前聊了什么,还能“聪明地”回忆起我们之前讨论过的所有相关背景?比如,你昨…...
CircuitPython开发实战:从环境搭建到内存优化与硬件选型
1. CircuitPython开发环境搭建与核心概念 如果你是从Arduino或者传统的嵌入式C开发转向微控制器编程,第一次接触CircuitPython的感觉,就像是突然有人给你递了一把万能钥匙。过去,点个灯、读个传感器,你得跟寄存器、数据手册、还有…...
如何在FF14中实现三倍效率的钓鱼体验?智能计时助手完全解析
如何在FF14中实现三倍效率的钓鱼体验?智能计时助手完全解析 【免费下载链接】Fishers-Intuition 渔人的直感,最终幻想14钓鱼计时器 项目地址: https://gitcode.com/gh_mirrors/fi/Fishers-Intuition 在《最终幻想14》的广阔世界中,钓鱼…...
