python 3 Urllib 数据抓取
2024-09-30 18:50:23
1.0 Urllib简介
Urllib是python自带的标准库,无需安装,直接引用即可。urllib通常用于爬虫开发,API(应用程序编程接口)数据获取和测试。在python2和python3中,urllib在不同版本中的语法有明显的改变。
Python2分为urllib和urllib2,urllib2可以接收一个request对象,并以此来放置一个URL的Headers,但是urllib只接收一个URL,意味着不能伪装用户代理字符串等。urllib模块可以提供进行Urlencode的方法,该方法用于GET查询字符串的生成,urllib2不具有这样的功能。这也是urllib与 urllib2经常在一起使用的原因。
由于urllib在不用的python版本上有明显的区别,在实际开发中也遇到一些尴尬的情况,其中最为主要的是版本之间的不兼容所带来的问题。
在python3中,urllib是一个收集几个模块来使用URL的软件包,大致具备以下功能:
urllib.request:用于打开和读取URL。
urllib.error:包含提出的例外urllib.request。
urllib.parse:用于解析URL。
urllib.robotparser:用于解析robots.txt文件。
1.1 发送请求
urllib.request.urlopen 的语法如下
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capth=None, cadefault=False, context=None)
参数:
url:需要访问的网站的URL地址。url格式必须完整,如 https://movie.douban.com/ 为完整的url,若url为 movie.douban.com/ 则程序运行时会提示无法识别url的提示。
- data:默认值为None,urllib判断参数data是否为None从而区分请求的方式。若参数data为None,则代表请求方式为GET,反之请求方式为POST,发送POST请求,参数data以字典形式存储数据,并将参数data由字典类型转换成字节类型才能完成POST请求。
- timeout:超时设置,指定阻塞操作(请求时间)的超市(如果未指定,就使用全局默认超时设置)。
- cafile, capath 和 cadefault:使用参数指定一组HTTPS请求的可信CA证书,cafile应指向包含一组CA证书的单个文件:capath应指向证书文件的目录:cadefault通常使用默认值即可。
- context:描述各种SSL选项的实例。
在实际使用中,常用的参数有url,data和timeout。若在爬虫中遇到证书验证,则可将证书验证直接关闭,也可以设置参数指向证书的信息和位置。相比而言,设置证书比较耗时,而且通用性不强。
当对网站发送请求时,网站会返回相应的响应内容。urlopen对象提供获取网站响应内容的方法函数,分别介绍如下:
- read() , readline() , readlines() , fileno() , close():对HTTPResponse类型数据操作。
- info():返回HTTPMessage对象,表示远程服务器返回的头信息
- getcode():返回HTTP状态码。
- geturl():返回请求的url。
下面例子用于实现urllib模块对网站发送请求并将响应内容写入文本文档,代码如下:
import urllib.request response=urllib.request.urlopen('http://movie.douban.com',None,2) html=response.read().decode('utf-8') f=open('html.txt','w',encoding='utf-8') f.write(html) f.close()
1.2复杂的请求
最新文章
- QQ--模拟登录
- Java 中的 Characters
- Spring JdbcTemplate 的使用与学习
- Mybatis Generator(定制化)代码生成器
- MYSQL日常操作命令再熟悉
- bzoj3389:[Usaco2004 Dec]Cleaning Shifts安排值班
- 关于C语言的输入-scanf、gets、getchar、getch、getline
- ZOJ - 2615 Cells
- Ant Design UI组件
- 20年硅谷技术牛人到访DataPipeline谈:技术如何与业务平衡发展
- Java 集合系列(一)
- ES6箭头函数Arrow Function
- .net webapi跨域方法整理
- MYSQL创建表的约束条件(可选)
- java自学-编程入门
- 基于jquery扩展漂亮的CheckBox
- orcal 数据库 maven架构 ssh框架 的全注解环境模版 maven中央仓库批量删除lastupdated文件后依然是lastupdated解决方法 mirror aliyun中央仓库
- Webpack4 学习笔记六 多页面配置和devtool
- Odoo8中安装新模块找不到的问题
- Poj 3287 Catch That Cow(BFS)
热门文章
- [Erlang危机](5.1.4)端口port
- python2.x里unicode错误问题
- ubuntu安装virtualbox
- luogu 4427 求和
- 洛谷 P1965 转圈游戏 —— 快速幂
- linux下的C语言开发(静态库/动态库)
- bzoj 1087: [SCOI2005]互不侵犯King【状压dp】
- bzoj 1059: [ZJOI2007]矩阵游戏【匈牙利算法】
- Odoo免费开源企业信息化平台助力企业成功
- 学习http协议的三次握手和四次挥手 ~~笔记