Python爬虫——urllib下载和订制请求对象
文章目录
- Python爬虫——urllib下载和订制请求对象
- 1、urllib下载资源
- 2、定制请求
Python爬虫——urllib下载和订制请求对象
1、urllib下载资源
下载资源使用urllib.request模块的urlretrieve()方法,
urllib.request.urlretrieve():将URL对应的互联网资源下载到本地。
import urllib.request# 下载网页
url_page = 'http://www.baidu.com'
urllib.request.urlretrieve(url_page,'baidu.html')#下载图片
url_picture = 'https://picsum.photos/id/1000/200/300'
urllib.request.urlretrieve(url_picture,'pic1.jpg')#下载视频
url_mp4 = 'https://vd2.bdstatic.com/mda-jkn0avce7k4ksr1x/sc/mda-jkn0avce7k4ksr1x.mp4?v_from_s=hkapp-haokan-hnb&auth_key=1657679260-0-0-7e2648f86a186404108f974b0d2aae03&bcevod_channel=searchbox_feed&pd=1&cd=0&pt=3&logid=3460060765&vid=14392644018648491043&abtest=103455_2&klogid=3460060765'
urllib.request.urlretrieve(url_mp4,'scenery.mp4')
2、定制请求
绝大多数网站都具备一定程度的反爬能力,禁止网络爬虫程序大量地访问网站资源,以免给网站服务器带来压力,
User-Agent(用户代理) 就是反爬策略的其中一种,很多网站都会对请求头Headers的User-Agent进行检测。
用不同的浏览器在发送请求的时候,会有不同的User-Agent头:
系统 | 浏览器 | User-Agent字符串 |
---|---|---|
Mac | Chrome | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36 |
Mac | Firefox | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:65.0) Gecko/20100101 Firefox/65.0 |
Mac | Safari | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15 |
Windows | Edge | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763 |
Windows | IE | Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko |
Windows | Chrome | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36 |
iOS | Chrome | Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/31.0.1650.18 Mobile/11B554a Safari/8536.25 |
iOS | Safari | Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4 |
Android | Chrome | Mozilla/5.0 (Linux; Android 4.2.1; M040 Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36 |
Android | Webkit | Mozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; M351 Build/KTU84P) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 |
查看本机的浏览器版本和User-Agent信息:https://useragent.buyaocha.com/
urllib.request模块默认使用的User-Agent为:Python-urllib/x.y(x和y是Python主版本和次版本号,例如Python-urllib/3.7)
使用默认request请求访问网站资源:
import urllib.request
# https请求协议
url_page = 'https://www.baidu.com'
response = urllib.request.urlopen(url_page)
content = response.read().decode('UTF-8')
print(content)
执行结果:网站通过识别请求头中 User-Agent 信息来判断是否是爬虫访问网站,如果爬虫被识别就无法获取到网站数据
<html>
<head><script>location.replace(location.href.replace("https://","http://"));</script>
</head>
<body><noscript><meta http-equiv="refresh" content="0;url=http://www.baidu.com/"></noscript>
</body>
</html>
定制请求:Request()
Request():创建一个Request对象来作为urllib.request.urlopen()的参数
参数说明:
url参数:请求的URL地址
data(默认为空):访问URL时要提交的数据,同时HTTP请求将从“GET”方式改为“POST”方式
headers(默认为空):是一个字典,包含了需要发送的HTTP请求头的键值对
import urllib.requesturl_page = 'https://www.baidu.com'# 获得User-Agent,伪装成SLBrowser浏览器访问网站
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.5261 SLBChan/10'}
#重构请求头,根据参数顺序使用关键字传承的方式传参,
request = urllib.request.Request(url=url_page,headers=headers)
response = urllib.request.urlopen(request)
content = response.read().decode('UTF-8')
print(content)
执行结果:破解了网站通过识别 User-Agent 来反爬虫程序的手段,成功获取到网站首页
Python爬虫——urllib下载和订制请求对象相关推荐
- Python爬虫 —— urllib库的使用(get/post请求+模拟超时/浏览器)
Python爬虫 -- urllib库的使用(get/post请求+模拟超时/浏览器) 这里写目录标题 Python爬虫 -- urllib库的使用(get/post请求+模拟超时/浏览器) 1.Py ...
- python爬虫之Scrapy框架的post请求和核心组件的工作 流程
python爬虫之Scrapy框架的post请求和核心组件的工作 流程 一 Scrapy的post请求的实现 在爬虫文件中的爬虫类继承了Spider父类中的start_urls,该方法就可以对star ...
- python爬虫下载-python爬虫之下载文件的方式总结以及程序实例
python爬虫之下载文件的方式以及下载实例 目录 第一种方法:urlretrieve方法下载 第二种方法:request download 第三种方法:视频文件.大型文件下载 实战演示 第一种方法: ...
- python 下载文件-python爬虫之下载文件的方式总结以及程序实例
python爬虫之下载文件的方式以及下载实例 目录 第一种方法:urlretrieve方法下载 第二种方法:request download 第三种方法:视频文件.大型文件下载 实战演示 第一种方法: ...
- Python爬虫——Urllib
目录 一.urllib库使用 二.请求对象的定制 三.编解码 1.get请求方式:urllib.parse.quote() 2.get请求方式:urllib.parse.urlencode() 3.p ...
- Python爬虫实战——下载小说
Python爬虫实战--下载小说 前言 第三方库的安装 示例代码 效果演示 结尾 前言 使用requests库下载开源网站的小说 注意:本文仅用于学习交流,禁止用于盈利或侵权行为. 操作系统:wind ...
- 【爬虫实战项目】Python爬虫批量下载音乐飙升榜并保存本地(附源码)
前言 今天给大家介绍的是Python爬虫批量下载音乐飙升榜并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是 ...
- 【爬虫实战项目】Python爬虫批量下载评书音频并保存本地(附源码)
前言 今天给大家介绍的是Python爬虫批量下载评书音频并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这 ...
- python爬虫批量下载“简谱”
python讨论qq群:996113038 导语: 上次发过一篇关于"python打造电子琴"的文章,从阅读量来看,我们公众号的粉丝里面还是有很多对音乐感兴趣的朋友的.于是,今天我 ...
最新文章
- 盘点11个面向文档的开源NoSQL数据库
- server vscode中的live_VSCode 建议你启用 gopls,它到底是个什么东东?
- Java防止Xss注入json_每日一题(java篇) 如何防止xss注入
- Linux高级编程实验(30个)
- Android花屏分析,Unity游戏在手机上运行时的花屏现象
- Oracle instantclient 11.2 (64位)安装与配置tnsnames.ora,并使用PL/SQL Develpoer14(64位)连接数据库
- 搭建属于自己的私有链,部署简单的智能合约
- 冒泡排序的C语言实现
- Android SoundPool封装
- vscode 终端美化
- ubuntu 16.04安装中文输入法
- java 伊甸园_离伊甸园仅一步之遥
- SQL计算每天的期初、入库、出库、结存数
- 如何用计算机自动求和,如何在excel中自动求和 自动求和的解决方法及步骤
- 蓝牙也宽带 诺基亚3230蓝牙共享宽带教程(内网用户设置或网关无响应的解决)
- 经典小船过河问题,附Python,java题解
- 注塑机摆放间距多少合适_注塑机一般的说法比如多少多少g,对应的型号,拉杆间距,锁模力的对应表谁能给我张...
- MATLAB 最小二乘法
- 三菱modbusRTU通讯实例_三菱PLC的无线通讯实例
- 网络系统设计的基本原则(一)
热门文章
- 谷歌也玩起了新零售?!
- ForkJoin小实例
- 帮我为这个程序设计一个停车场信息管理系统,能够实现对停车位的信息管理(车位号、车主姓名、性别、年龄、 车牌号)。最后,停车信息输出到out.txt中。设计流程图(visio画图)...
- ssm+JSP计算机毕业设计银行绩效考核系统5542d【源码、程序、数据库、部署】
- 无服务器Serverless详解
- 超频的基础技术教程现看现学(二)
- 官网选项卡切换---发发老师
- 抖音怎么用计算机数字等于中文字,抖音里怎么添加文字和图片?
- 『金融帝国实验室』(Capitalism Lab)〔优秀教程②〕《了解供应链中供求关系》(作者:CapitalismLabStory)
- 数据分析pandas完成数据分析项目