【爬虫】Urllib让我们的 python 假装是浏览器
在 Python 这个内置的 Urllib 库中,有这么 4 个模块:
- request,request模块是我们用的比较多的,就是用它来发起请求,所以我们重点说说这个模块。
- error,error模块呢,就是当我们在使用 request 模块遇到错了,就可以用它来进行异常处理。
- parse,parse模块就是用来解析我们的 URL 地址的,比如解析域名地址啦,URL指定的目录等。
- robotparser,这个用的就比较少了,它就是用来解析网站的 robot.txt
了解了 urllib 之后,我们就用 python 代码来模拟请求吧!
urllib.request
首先我们导入 urllib 的请求模块:
import urllib.requestresponse = urllib.request.urlopen('http://www.baidu.com')
print(response.read().decode('utf-8'))
我们通过 request 模块的 urlopen 方法,直接用 Get 请求方式请求百度了,那么返回的内容就是和浏览器一样的。
request 的 urlopen 方法,可以传入的参数主要有 3 个
urllib.request.urlopen(url, data=None, [timeout, ]*)
第一个 url 就是我们请求的链接,比如我们刚刚就请求百度。
第二个参数 data,就是专门给我们 post 请求携带参数的,比如我们在登录的时候,可以把用户名密码封装成 data 传过去,在这里的 data 的值我们可以用 byte 的类型传递。
第三个参数 timeout 就是设置请求超时时间,如果等好久服务器都没有给我们返回数据,我们就不鸟他了!这就是 request 的 urlopen 主要用法。
如果我们要欺骗服务器说我们是浏览器或者手机请求的呢?这个时候我们需要添加请求头信息,也就是我们上次说的 request header。那么,这个时候,就该让 request 模块中的 Request 方法出场了,这个 Request 方法的参数多一些:
urllib.request.Request(url, data=None, headers={}, method=None)
我们除了定义 url 和 data 之外,我们还可以定义请求头信息,urlopen 默认是 Get 请求当,我们传入参数它就为 Post 请求了,而 Request 可以让我们自己定义请求的方式,这样我们就可以使用 Request 来封装我们的请求信息。
通过设定headers参数可以冒充某个设备浏览器:
headers = {#假装自己是浏览器'User-Agent':' Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
}
记得请求参数要转unicode码:
from urllib import request,parse
dict = {'return_url':'https://zhihu.com/','user_name':'xiaoshuaib@gmail.com','password':'123456789','_post_type':'ajax',
}
data = bytes(parse.urlencode(dict),'utf-8')
然后我们就可以封装 request 了:
req = request.Request(url,data=data,headers=headers,method='POST')
最后发送请求:
response = request.urlopen(req)
print(response.read().decode('utf-8'))
相关文章:
【爬虫】Urllib让我们的 python 假装是浏览器
在 Python 这个内置的 Urllib 库中,有这么 4 个模块: request,request模块是我们用的比较多的,就是用它来发起请求,所以我们重点说说这个模块。error,error模块呢,就是当我们在使用 request 模…...
java基础面试
java深拷贝和浅拷贝的区别 深拷贝和浅拷贝最根本的区别在于是否真正获取一个对象的复制实体,而不是引用。 假设B复制了A,修改A的时候,看B是否发生变化: 如果B跟着也变了,说明是浅拷贝,拿人手短ÿ…...
C++ 动态规划经典案例解析之最长公共子序列(LCS)_窥探递归和动态规划的一致性
1. 前言 动态规划处理字符相关案例中,求最长公共子序列以及求最短编辑距离,算是经典中的经典案例。 讲解此类问题的算法在网上一抓应用一大把,即便如此,还是忍不住有写此文的想法。毕竟理解、看懂都不算是真正掌握,唯…...
接口测试自动化:简化测试流程,提升效率
接口测试自动化:简化测试流程,提升效率 什么是接口测试自动化? 接口测试自动化是指使用特定的工具和技术来自动化执行接口测试的过程。通过编写脚本,自动化工具可以模拟用户与软件系统的交互,验证接口的功能和性能。…...
LoRA微调方法详解
本文要介绍的是大模型的微调训练方法之一----LoRA。 0 背景 现在大模型非常火爆,大家都在想方设法应用大模型。 当前很多大模型虽说可以zero-shot直接使用, 但是在具体应用上一般还是微调一下效果更好, 也就是常说的finetune。 在小模型时代…...
redis-数据类型及样例
一.string 类型数据的基本操作 1.添加/修改数据 set key value2.获取数据 get key3.删除数据 del key4.添加/修改多个数据 mset key1 value1 key2 value25.获取多个数据 mget key1 key2二.list类型的基本操作 数据存储需求:存储多个数据,并对数据…...
公司电脑三维图纸加密、机械图挡加密软件
机械图纸加密软件的问世,让很多的网络公司都大受其带来的工作中的便利。在安装了机械图纸加密软件后,不仅可以很好的管理员工在工作时的上网娱乐,在对整个公司员工的工作效率上也有着明显的提高,那么对于机械图纸加密软件的具体特…...
安装使用IDEA,修改样式,配置服务,构建Maven项目(超级详细版)
目录 前言: 一,安装 1.1打开官网JetBrains: Essential tools for software developers and teams点击 Developer Tools,再点击 Intellij IDEA 2.点击下载编辑 3.选择对应的版本,左边的 Ultimate 版本为旗舰版,需要…...
Apache Dubbo 云原生可观测性的探索与实践
作者:宋小生 - 平安壹钱包中间件资深工程师 Dubbo3 可观测能力速览 Apache Dubbo3 在云原生可观测性方面完成重磅升级,使用 Dubbo3 最新版本,你只需要引入 dubbo-spring-boot-observability-starter 依赖,微服务集群即原生具备以…...
DaVinci Resolve Studio 18 for Mac 达芬奇调色
DaVinci Resolve Studio 18是一款专业的视频编辑和调色软件,适用于电影、电视节目、广告等各种视觉媒体的制作。它具有完整的后期制作功能,包括剪辑、调色、特效、音频处理等。 以下是DaVinci Resolve Studio 18的主要特点: - 提供了全面的视…...
Excelize Go语言操作 Office Excel文档基础库
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式…...
SpringBoot、Java 使用 Jsoup 解析 HTML 页面
使用 Jsoup 解析 HTML 页面 什么是 Jsoup? Jsoup 是一个用于处理 HTML 页面的 Java 库,它提供了简单的 API,使得从 HTML 中提取数据变得非常容易。无论是获取特定标签的内容还是遍历整个页面的元素,Jsoup 都能轻松胜任。 如何使…...
C# 随心记
#region 批量保存到数据库 public bool InsertDB(DataTable dt) { bool bResult true; LogInfo.WriteTextToFile("使用Bulk插入的实现方式"); Stopwatch sw new Stopwatch(); using (SqlConnecti…...
华为OD机试-字符串分割
题目描述 给定一个非空字符串S,其被N个‘-’分隔成N1的子串,给定正整数K,要求除第一个子串外,其余的子串每K个字符组成新的子串,并用‘-’分隔。对于新组成的每一个子串,如果它含有的小写字母比大写字母多…...
element-ui的el-dialog,简单的封装。
el-dialog是使用率很高的组件 使用el-dialog很多都是按照文档的例子,用一个变量控制是否显示,再来一个变量控制标题。 如果我这个对话框多个地方使用的话还要创建多个变量,甚至关闭之后还要清空一些变量,应该可以简化一点。我写…...
SpringBoot引入外部jar打包失败解决,SpringBoot手动引入jar打包war后报错问题
前言 使用外部手动添加的jar到项目,打包时出现jar找不到问题解决 处理 例如项目结构如下 引入方式换成这种 <!-- 除了一下这两种引入外部jar,还是可以将外部jar包添加到maven中(百度查)--><!-- pdf转word --><…...
HTTP基础:学习HTTP协议的基本知识,了解请求和响应的过程
HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超媒体文档(如HTML)的应用层协议,它是Web中最基本的协议。 HTTP请求和响应都是由客户端和服务器之间进行的。 一个完整的HTTP请求由以下几…...
Spark基础-任务提交相关参数
整理一下用过的spark相关的参数 spark应用提交命令spark-submit的常用参数(使用spark-submit --help可以查看所有参数, 有一些参数在下面的spark配置属性定义了,也没有额外列出) 参数默认值含义--master local[*]spark集群的mast…...
ROS-PyQt小案例
前言:目前还在学习ROS无人机框架中,,, 更多更新文章详见我的个人博客主页【前往】 ROS与PyQt5结合的小demo,用于学习如何设计一个界面,并与ROS中的Service和Topic结合,从而控制多个小乌龟的运动…...
【算法】双指针——leetcode盛最多水的容器、剑指Offer57和为s的两个数字
盛水最多的容器 (1)暴力解法 算法思路:我们枚举出所有的容器大小,取最大值即可。 容器容积的计算方式: 设两指针 i , j ,分别指向水槽板的最左端以及最右端,此时容器的宽度为 j - i 。由于容器…...
终极免费方案:5分钟破解Cursor AI试用限制,永久享受Pro功能
终极免费方案:5分钟破解Cursor AI试用限制,永久享受Pro功能 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve …...
告别传统菜单!用SARibbon库为你的Qt应用打造Office风格界面(附高分屏适配)
告别传统菜单!用SARibbon库为你的Qt应用打造Office风格界面(附高分屏适配) 当用户第一次打开你的Qt应用时,第一印象往往决定了他们是否会继续使用。传统的菜单栏界面在2023年看起来已经过时,而类似Office的Ribbon界面则…...
如何用Python自动识别ElevenLabs输出语音是否触发青少年保护机制?开源检测脚本+实时响应策略(限24小时领取)》
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs青少年语音保护机制的技术本质与合规边界 ElevenLabs 的青少年语音保护机制并非简单的年龄声明开关,而是一套融合前端约束、后端策略引擎与联邦学习辅助验证的多层技术栈。其核心…...
2026营销策划岗位学数据分析能提升职场能力吗
一、数据分析在营销策划中的核心价值数据驱动决策取代经验主义,精准定位用户需求与行为模式 实时监测市场趋势与竞品动态,优化营销策略的敏捷性 量化评估活动效果,提升ROI与资源分配效率二、2026年营销策划岗位的数据分析技能需求基础能力&am…...
LoRA参数高效微调:低秩适配原理与可视化实战
1. 项目概述:这不是调参,是给大模型“打补丁”的手艺活LoRA(Low-Rank Adaptation)不是什么新潮概念,它本质上是一种参数高效微调(PEFT)的工程实践智慧——当你要让一个百亿参数的GPT或BERT模型去…...
Ollama迁移到vLLM:本地大模型服务生产化实战指南
1. 项目概述:为什么一个本地大模型服务迁移指南值得写满5000字?“From Local to Production: The Ultimate Ollama to vLLM Migration Guide”——这个标题里藏着三重现实张力:本地开发的便利性、生产环境的严苛性,以及大模型推理…...
10分钟快速上手:使用html-to-docx实现HTML到Word文档的无缝转换
10分钟快速上手:使用html-to-docx实现HTML到Word文档的无缝转换 【免费下载链接】html-to-docx HTML to DOCX converter 项目地址: https://gitcode.com/gh_mirrors/ht/html-to-docx 还在为网页内容无法完美转换为Word文档而烦恼吗?每次复制粘贴H…...
AssetStudio深度解析:Unity资源二进制结构与离线反编译原理
1. 这不是“又一个Unity资源查看器”,而是一把能拆开Unity游戏包的手术刀AssetStudio这个名字,第一次见的人常误以为是Unity官方出的配套工具——毕竟带个“Studio”后缀,界面又长得挺像Unity编辑器。但其实它和Unity Technologies毫无关系&a…...
如何完全掌控联想拯救者笔记本性能:5个高效配置秘籍
如何完全掌控联想拯救者笔记本性能:5个高效配置秘籍 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit 想要彻底释放…...
DCIM管理系统是什么?它的应用价值与关键功能有哪些?
DCIM管理系统的定义与功能概述 是现代数据中心重要的工具,目的是融合IT管理与设备监控,进而实现高效的容量规划与设备维护。这个系统的核心组件包括实时监控、资产管理及环境监控功能,利用综合运用这些工具,操作人员能够快速识别…...
