urllib库

  • urllib库是Python中一个最基本的网络请求的库。它可以模拟浏览器的行为发送请求(都是这样),从而获取返回的数据

urllib.request

在Python3的urllib库当中,所有和网络请求相关的方法都被集成到了urllib.request模块下

#基本使用
from urllib import request resp = request.urlopen("URL") print(resp.read())

如果是成功的,那么我们打印的内容和在浏览器中右击查看源代码的内容是一样的。

urlopen接受两个参数:

  • url:请求的url地址
  • data:请求的data,如果设置了这个值,请求就会变成是POST请求

返回值:返回值是一个http.client.HTTPResponse对象,这个对象是一个类 文件句柄 对象。有read(size)、readline、readlines以及getcode等方法

urlretrieve函数

这个函数可以非常方便的将网页上的内容保存到本地。

from urllib import request

request.urlretrieve("URL","本地保存的文件")

urlencode函数

用浏览器发送请求的时候,如果url中包含了中文或者是其他的特殊字符,那么浏览器会自动的给我们进行一个编码。而如果是我们的爬虫,我们就只能手动的进行编码。

urlencode可以把字典的数据转换为url编码的数据

form urllib import parse

data = {"key":"value"}

url_encode = parse.urlencode(data)

print(url_encode)

parse_qs函数

将经过编码后的数据再次进行解码。

form urllib import parse

data = {"key":"value"}

url_encode = parse.urlencode(data)

url_decode = parse.parse_qs(url_encode)

print(url_decode)

urlparse和urlsplit

有的时候,我们从页面上拿到一个url,想对这个url进行一个分割,取出某一部分什么的。就可以使用urlparse和urlsplit这些啦

from urllib import request,parse

url = 'http://www.baidu.com/s?username=zhiliao'

result = parse.urlsplit(url)
# result = parse.urlparse(url) print('scheme:',result.scheme)
print('netloc:',result.netloc)
print('path:',result.path)

urlparse和urlsplit几乎是一模一样的,唯一不同的就是urlparse中多了一个params属性,这个不常用。

request.Request

还记得在充电中说的请求头吗,如果你想在请求的过程中加上这些请求头,那么你就不得不使用这个request.Request类来实现了。

from urllib import request

headers  = {
"User-Agent":""
}
req = request.Request("URL",headers=headers)
resp = request.urlopen(req) print(resp.read())

ProxyHandler代理设置

我们制作的爬虫有时候为了爬取更多的数据,有可能会对对方的服务器造成很大的压力。所以,一些网站就专门针对爬虫做了一些防范措施,之前的user-agents是一个,一个Ip访问次数过多也会被禁止,这也是一种防爬机制,所以我们可能会找一些代理IP,当自己的IP无法使用的时候,换一个IP重新使用

form urllib import request

handler = requet.ProxyHandler({"代理的协议(http或者https)":"代理IP+端口"})

opener = request.build_opener(handler)

req = request.Request("请求的URL")
resp = opener.open(req) print(resp.read())

COOKIE的获取和使用

cookie的格式:

Set-Cookie:NAME=VALUE:Expires/Max-age=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE

  • NAME:cookie的名字
  • VALUE:cookie的值
  • Expires:cookie的过期时间,时间一到,浏览器会自动清除
  • Path:cookie作用的路劲
  • Domain:cookie作用的域名
  • SECURE:是否只在https协议下起作用

使用cookielib库和HTTPCookieProcessor模拟登录

Python爬虫学习:Python内置的爬虫模块urllib库的更多相关文章

  1. Python基础学习五 内置函数

    1.函数补充: 1)函数返回值return可以有多个 2)补充示例: nums = [0,1,2,3,4,5,6,7,8] #如何将list里面的元素变为字符串类型 new_nums = [str(x ...

  2. python基础学习笔记——内置函数

    一. 简介 python内置了一系列的常用函数,以便于我们使用,python英文官方文档详细说明:点击查看, 为了方便查看,将内置函数的总结记录下来. 二. 使用说明 以下是Python3版本所有的内 ...

  3. python基础学习Day14 内置函数 匿名函数

    一.内置函数里几个高频重要函数 (1)min\max函数的用法 以min函数的为例: min:返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值). l1 =[(,),(, ...

  4. Python内置的操作系统模块(os)与解释器交互模块(sys)

    Python内置的操作系统模块(os)与解释器交互模块(sys) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本片博客只介绍Python调用操作系统的模块即os模块,以及Pyth ...

  5. Python 数据类型常用的内置方法(二)

    目录 Python 数据类型常用的内置方法(二) 1.字符串类型常用内置方法 1.upper.lower.isupper.islower 2.startswith.endswith 3.format ...

  6. Python 数据类型常用的内置方法(一)

    目录 Python 数据类型常用的内置方法 1.整型 int 2.浮点型 float 字符串转浮点型: 3.字符串 str 多种类型转字符型: 索引 切片 len( )方法:统计字符串长度/个数 移除 ...

  7. Python之生成器及内置函数篇4

    一.可迭代对象 #1.什么是迭代?:迭代是一个重复的过程,并且每次重复都是基于上一次的结果而来 #2.可迭代的对象:在python中,但凡内置有__iter__方法的对象,都是可迭代的对象 #3.迭代 ...

  8. [转]python file文件操作--内置对象open

    python file文件操作--内置对象open   说明: 1. 函数功能打开一个文件,返回一个文件读写对象,然后可以对文件进行相应读写操作. 2. file参数表示的需要打开文件的相对路径(当前 ...

  9. python字符串——"奇葩“的内置函数

      一.前言 python编程语言里的字符串与我们初期所学的c语言内的字符串还是有一定不同的,比如python字符串里的内置函数就比语言的要多得多:字符串内的书写格式也会有一点差异,例:字符串内含有引 ...

  10. python 类(object)的内置函数

    python 类(object)的内置函数 # python 类(object)的内置函数 ### 首先 #### 以__双下划线开头的内置函数 __ #### __往往会在某些时候被自动调用,例如之 ...

随机推荐

  1. (二分搜索)Can you solve this equation? -- hdu -- 2199

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=2199 Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  2. spring获取webapplicationcontext,applicationcontext几种方法详解(转载)

    转载自  http://www.blogjava.net/Todd/archive/2010/04/22/295112.html 方法一:在初始化时保存ApplicationContext对象 代码: ...

  3. Android-广播总结

    1.发送广播: 其实发送广播属于隐式意图 1.1.系统发出的广播(有序广播/无序广播) 1.2自己发出的广播(有序广播/无序广播) 2.订阅广播: 2.1.AndroidManifest.xml形式订 ...

  4. 结对项目— 词频统计(语言C++)

    结对对象:季天梦 博客地址:http://www.cnblogs.com/jitianmeng/ github链接:https://github.com/liuyutianlyt/EX_4.md 比例 ...

  5. Jenkins 使用 Build Flow 插件配置工作流任务依赖

    Jenkins 使用 Build Flow 插件配置工作流任务依赖 Jenkins 多任务依赖方式的配置方法目前可以通过MultiJob Project 或者Build Flow 或者Piplelin ...

  6. 新手上路,django学习笔记(1) 环境部署

    很多年没写代码了,以前学的C#,用ASP.NET,但是最近几年没落了,JAVA在崛起,最近感觉Python比较火,总是在各种技术场合听到Python,或者身边的朋友在讨论Python,所以突然想学习一 ...

  7. Flex 布局里 input 宽度最小 150px 的问题, 浏览器 BUG?

    今天在使用 flex 布局时, 发现当 flex 布局容器比小(小于 150px )时,里面的 input[text] 的宽度会比容器宽: <style> #main { width:12 ...

  8. VS2015 IIS Express 无法启动 解决办法(转)

    因为安装各种乱七八糟的软件,然后不小心把IIS Express卸载掉了,网上下载了一个IIS Express 7,安装之后本地使用VS 2015无法启动调试,F5 无法启动IIS, 再次F5调试,没有 ...

  9. 字节码执行方式--解释执行和JIT

    此文已由作者赵计刚薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 1.两种执行方式: 解释执行(运行期解释字节码并执行) 强制使用该模式:-Xint 编译为机器码执行(将字 ...

  10. Android 屏幕,语言,API版本 适配和兼容性

    Supporting Different Languages http://developer.android.com/training/basics/supporting-devices/langu ...