文章目录

  • 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下载和订制请求对象相关推荐

  1. Python爬虫 —— urllib库的使用(get/post请求+模拟超时/浏览器)

    Python爬虫 -- urllib库的使用(get/post请求+模拟超时/浏览器) 这里写目录标题 Python爬虫 -- urllib库的使用(get/post请求+模拟超时/浏览器) 1.Py ...

  2. python爬虫之Scrapy框架的post请求和核心组件的工作 流程

    python爬虫之Scrapy框架的post请求和核心组件的工作 流程 一 Scrapy的post请求的实现 在爬虫文件中的爬虫类继承了Spider父类中的start_urls,该方法就可以对star ...

  3. python爬虫下载-python爬虫之下载文件的方式总结以及程序实例

    python爬虫之下载文件的方式以及下载实例 目录 第一种方法:urlretrieve方法下载 第二种方法:request download 第三种方法:视频文件.大型文件下载 实战演示 第一种方法: ...

  4. python 下载文件-python爬虫之下载文件的方式总结以及程序实例

    python爬虫之下载文件的方式以及下载实例 目录 第一种方法:urlretrieve方法下载 第二种方法:request download 第三种方法:视频文件.大型文件下载 实战演示 第一种方法: ...

  5. Python爬虫——Urllib

    目录 一.urllib库使用 二.请求对象的定制 三.编解码 1.get请求方式:urllib.parse.quote() 2.get请求方式:urllib.parse.urlencode() 3.p ...

  6. Python爬虫实战——下载小说

    Python爬虫实战--下载小说 前言 第三方库的安装 示例代码 效果演示 结尾 前言 使用requests库下载开源网站的小说 注意:本文仅用于学习交流,禁止用于盈利或侵权行为. 操作系统:wind ...

  7. 【爬虫实战项目】Python爬虫批量下载音乐飙升榜并保存本地(附源码)

    前言 今天给大家介绍的是Python爬虫批量下载音乐飙升榜并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是 ...

  8. 【爬虫实战项目】Python爬虫批量下载评书音频并保存本地(附源码)

    前言 今天给大家介绍的是Python爬虫批量下载评书音频并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这 ...

  9. python爬虫批量下载“简谱”

    python讨论qq群:996113038 导语: 上次发过一篇关于"python打造电子琴"的文章,从阅读量来看,我们公众号的粉丝里面还是有很多对音乐感兴趣的朋友的.于是,今天我 ...

最新文章

  1. 盘点11个面向文档的开源NoSQL数据库
  2. server vscode中的live_VSCode 建议你启用 gopls,它到底是个什么东东?
  3. Java防止Xss注入json_每日一题(java篇) 如何防止xss注入
  4. Linux高级编程实验(30个)
  5. Android花屏分析,Unity游戏在手机上运行时的花屏现象
  6. Oracle instantclient 11.2 (64位)安装与配置tnsnames.ora,并使用PL/SQL Develpoer14(64位)连接数据库
  7. 搭建属于自己的私有链,部署简单的智能合约
  8. 冒泡排序的C语言实现
  9. Android SoundPool封装
  10. vscode 终端美化
  11. ubuntu 16.04安装中文输入法
  12. java 伊甸园_离伊甸园仅一步之遥
  13. SQL计算每天的期初、入库、出库、结存数
  14. 如何用计算机自动求和,如何在excel中自动求和 自动求和的解决方法及步骤
  15. 蓝牙也宽带 诺基亚3230蓝牙共享宽带教程(内网用户设置或网关无响应的解决)
  16. 经典小船过河问题,附Python,java题解
  17. 注塑机摆放间距多少合适_注塑机一般的说法比如多少多少g,对应的型号,拉杆间距,锁模力的对应表谁能给我张...
  18. MATLAB 最小二乘法
  19. 三菱modbusRTU通讯实例_三菱PLC的无线通讯实例
  20. 网络系统设计的基本原则(一)

热门文章

  1. 谷歌也玩起了新零售?!
  2. ForkJoin小实例
  3. 帮我为这个程序设计一个停车场信息管理系统,能够实现对停车位的信息管理(车位号、车主姓名、性别、年龄、 车牌号)。最后,停车信息输出到out.txt中。设计流程图(visio画图)...
  4. ssm+JSP计算机毕业设计银行绩效考核系统5542d【源码、程序、数据库、部署】
  5. 无服务器Serverless详解
  6. 超频的基础技术教程现看现学(二)
  7. 官网选项卡切换---发发老师
  8. 抖音怎么用计算机数字等于中文字,抖音里怎么添加文字和图片?
  9. 『金融帝国实验室』(Capitalism Lab)〔优秀教程②〕《了解供应链中供求关系》(作者:CapitalismLabStory)
  10. 数据分析pandas完成数据分析项目