一、urllib2概念

urllib2是一个Python模块,可以用来获取URL资源(fetching URLs),它定义了函数和类,用以协助URL操作(actions),如基本身份验证和摘要式身份验证(basic and digest authentication)、重定向、cookies等


二、urllib2和urllib区别

两个模块都是完成URL的请求,但还是有所区别

1、urllin2可以接受一个Request对象,用来设置URL request的头部信息(headers),urllib仅可以接受URL,这意味你不可以通过urllib模块伪装你的User-Agent等字符串(伪装浏览器)

2、urllib提供urlencode方法(urlencode只能对字典编码)用来GET查询字符串的产生,而vrllib2没有,所以很多时候urllib和urllib2一起用

3、urllib2很重要的一个好处就是urllib2.urlopen可以接受Request对象作为参数,从而可以控制HTTP Request的header部


三、最简单的爬虫

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/22
import urllib2
request=urllib2.Request(r'http://www.zjxu.edu.cn/')
RES=urllib2.urlopen(request).read()
print RES

运行结果(因为学校网站反爬机制不会去怎么做,所以比较好爬):

当然如果你想把网页趴下来,存到本地,可以通过文件方法如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/22
import urllib2request=urllib2.Request(r'http://www.zjxu.edu.cn/')
RES=urllib2.urlopen(request).read()
wfile=open(r'./1.html',r'wb')
wfile.write(RES)
wfile.close()
print RES

Request方法是对URL的请求

.read()方法返回获取到的网页内容(即读取获取到的网页内容)

urlopen方法执行之后是返回一个RES对象,返回的网页信息便保存在RES中

理解urlopen

urlopen一般接受三个参数,urlopen(url,data,timeout)

1.url即URL

2.data是访问URL是要传送的数据

3.timeout是设置超时时间

2和3参数可以部传送,data默认为空None。timeout默认为socket_GLOBAL_DEFAULT_TIMEOUT


四、Post与GET数据传送区别

最重要的区别就是:

GET方式是直接以链接形式访问,链接中包含了所有的参数(例如百度中搜索百度二字,会在链接中把一些搜索参数显示出来:https://www.baidu.com/s?ie=UTF-8&wd=%E7%99%BE%E5%BA%A6)这里ie指编码格式,wd代表搜索的关键字。所以很明显,安全性不如Post方法高,但Post的话如果你想查看提交了什么,就不太方便了……

下面有两个demo来做个对比(虽然是不成功,但看看区别就好)

Post方式

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/22
import urllib2
import urllib
#post类型value={"username":"11111","password":"11111"}
data=urllib.urlencode(value)
url="https://passport.hupu.com/login"
request=urllib2.Request(url,data)
RES=urllib2.urlopen(request)
print RES.read()

定义字典类型value,保存username和password,通过urlencode对字典编码返回给data,将数据和url通过Request方法来申请访问,然后再显示出来,当然这里一般的话会显示出登入后的页面,不过这里失败了,应该是有流水等

GET方式

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/22
import urllib2
import urllib
#get类型
value={"uesrname":"111111","password":"11111"}
data=urllib.urlencode(value)
url="https://passport.hupu.com/login"
geturl=url+"?"+data   #https://passport.hupu.com/login?password=11111&uesrname=111111
request=urllib2.Request(geturl)
RES=urllib2.urlopen(request)
print geturl
print RES.read()

可以看到通过将url+”?”+data拼接起来赋值给geturl,输出geturl值为:

https://passport.hupu.com/login?password=11111&uesrname=111111


五、设置Headers

目的是为了完全模拟浏览器工作,因为有些网站不会同意这么简单的程序就能直接访问,所以要设置一下Headers属性

下面步骤是找到Headers

打开检查页面元素

下拉就能找到User-Agent这些

下面是demo

#!/usr/bin/env python# -*- coding:utf-8 -*-# author: xulinjie time:2017/10/23import urllib2url=r'http://my.csdn.net/w_linux'headers={"User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Mobile Safari/537.36"}request=urllib2.Request(url,headers=headers)#Request参数有三个,url,data,headers,如果没有data参数,那就得按我这样的写法RES=urllib2.urlopen(request).read()wfile=open(r'./1.html',r'wb')wfile.write(RES)wfile.close()print RES

将爬取的页面保存到自本地的html中,效果如下

常常用来头部包装的数据

  • User-Agent :这个头部可以携带如下几条信息:浏览器名和版本号、操作系统名和版本号、默认语言

  • Referer:可以用来防止盗链,有一些网站图片显示来源http://*.com,就是检查Referer来鉴定的

  • Connection:表示连接状态,记录Session的状态。

  • Content-Type : 在使用 REST 接口时,服务器会检查该值,用来确定 HTTP Body 中的内容该怎样解析。
  • application/xml : 在 XML RPC,如 RESTful/SOAP 调用时使用
  • application/json : 在 JSON RPC 调用时使用
  • application/x-www-form-urlencoded : 浏览器提交 Web 表单时使用

在使用服务器提供的 RESTful 或 SOAP 服务时, Content-Type 设置错误会导致服务器拒绝服务


六、timeout参数设置

该参数是urlopen方法的第三个参数,可以设置等待多久超时,为了解决某些网站反应慢造成影响,

注意:

假如第二个参数data为空那么需要特别指明timeout为多少,写明参数,如果data已经传入那就不必声明了

import urllib2RES=urllib2.urlopen(r'http://my.csdn.net/w_linux',timeout=8)

import urllib2RES=urllib2.urlopen(r'http://my.csdn.net/w_linux',data,8)

Python爬虫(二)——urllib库,Post与Get数据传送区别,设置Headers,urlopen方法,简单爬虫相关推荐

  1. python爬虫之urllib库详解

    python爬虫之urllib库详解 前言 一.urllib库是什么? 二.urllib库的使用 urllib.request模块 urllib.parse模块 利用try-except,进行超时处理 ...

  2. 网络爬虫--5.urllib库的基本使用(1)

    文章目录 一. 前言 二. urlopen 三. Request 四. User-Agent 五. 添加更多的Header信息 1. 添加一个特定的header 2. 随机添加/修改User-Agen ...

  3. python中的urllib库_Python2/3中的urllib库

    介绍urllib库在不同版本的Python中的变动,并以Python3.X讲解urllib库的相关用法. urllib库对照速查表 Python2.X Python3.X urllib urllib. ...

  4. 初学爬虫之 urllib 库的介绍与使用(一)

    初学爬虫之 urllib 库的介绍与使用(一) 目录 初学爬虫之 urllib 库的介绍与使用(一) 简介 1.1 urllib.request.urlopen() 1.2 urllib.reques ...

  5. Py之matplotlib:python包之matplotlib库图表绘制包的简介、安装、使用方法(matplotlib颜色大全)详细攻略

    Py之matplotlib:python包之matplotlib库图表绘制包的简介.安装.使用方法(matplotlib颜色大全)详细攻略 目录 matplotlib简介 matplotlib安装 m ...

  6. Python中第三方的库(library)、模块(module),包(package)的安装方法以及ImportError: No module named...

    Python中,想要安装第三方安装包,即third library,package等,对于熟悉的人来说,很简单. 但是对于新手,至少对于之前的我,很难,往往只是安装一个很小的包,都被搞得一头雾水. 现 ...

  7. python urllib.request 爬虫 数据处理-python 爬虫之 urllib库

    文章更新于:2020-03-02 注:代码来自老师授课用样例. 一.初识 urllib 库 在 python2.x 版本,urllib 与urllib2 是两个库,在 python3.x 版本,二者合 ...

  8. python urllib.request 爬虫 数据处理-Python网络爬虫(基于urllib库的get请求页面)

    一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...

  9. Python 爬虫之urllib库的使用

    urllib库 urllib库是Python中一个最基本的网络请求库.可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据. urlopen函数: 在Python3的urlli ...

  10. python爬虫入门urllib库的使用

    urllib库的使用,非常简单. import urllib2response = urllib2.urlopen("http://www.baidu.com") print re ...

最新文章

  1. centos安装 TA-Lib
  2. oracle关闭rs,Oracle 关闭(shutdown immediate)时hang住
  3. java调用c so动态库_jni 调用C动态库dll/so
  4. vuejs项目如何修改node_mudule为公用文件?
  5. python修改html的td_python3修改HTMLTestRunner,生成有截图的测试报告,并发送测试邮件(二)...
  6. python入门三剑客_python数据分析三剑客基础之matpoltlib初解
  7. http://longshuai2007.blog.163.com/blog/static/1420
  8. 春考本科2018招计算机的学校,山东2018春季高考本科普通批一志愿院校投档情况统计表...
  9. Python3基本数据类型(一、数字类型)
  10. struct (5.31)
  11. CVS文件的常见操作
  12. 商业银行资产托管业务读书笔记
  13. SD卡被写保护怎么解除?
  14. TextView的setBounds()方法
  15. STRAIGHT分析合成算法
  16. todesk无法连接网络
  17. 《C语言及程序设计》实践参考——回文、素数
  18. 15种独一无二的创新数据可视化方式
  19. Gibbs Sampler
  20. 搜狗浏览器默认皮肤无法修改问题

热门文章

  1. 手工纸盒子_折纸盒与纸盒子的折法手工制作图解教程大全 - 纸艺网
  2. 二元二次拟合 matlab函数
  3. 判断题 错与对的 t、f 是什么意思
  4. HTML竖着写古诗,诗词竖着写的格式(例: 题临安邸 )
  5. 局域网常见攻击方式原理
  6. coremail服务器无响应,icoremail邮箱系统 邮件收发常见问题|创思Chance
  7. FPGA(3)--VHDL及原理图--4位全加器
  8. 使用github搭建网站
  9. 连接网络打印机报错0x000003e3
  10. 吉林师范大学计算机学院保研,好消息!我校获保研资格!!