Python爬虫(二)——urllib库,Post与Get数据传送区别,设置Headers,urlopen方法,简单爬虫
一、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方法,简单爬虫相关推荐
- python爬虫之urllib库详解
python爬虫之urllib库详解 前言 一.urllib库是什么? 二.urllib库的使用 urllib.request模块 urllib.parse模块 利用try-except,进行超时处理 ...
- 网络爬虫--5.urllib库的基本使用(1)
文章目录 一. 前言 二. urlopen 三. Request 四. User-Agent 五. 添加更多的Header信息 1. 添加一个特定的header 2. 随机添加/修改User-Agen ...
- python中的urllib库_Python2/3中的urllib库
介绍urllib库在不同版本的Python中的变动,并以Python3.X讲解urllib库的相关用法. urllib库对照速查表 Python2.X Python3.X urllib urllib. ...
- 初学爬虫之 urllib 库的介绍与使用(一)
初学爬虫之 urllib 库的介绍与使用(一) 目录 初学爬虫之 urllib 库的介绍与使用(一) 简介 1.1 urllib.request.urlopen() 1.2 urllib.reques ...
- Py之matplotlib:python包之matplotlib库图表绘制包的简介、安装、使用方法(matplotlib颜色大全)详细攻略
Py之matplotlib:python包之matplotlib库图表绘制包的简介.安装.使用方法(matplotlib颜色大全)详细攻略 目录 matplotlib简介 matplotlib安装 m ...
- Python中第三方的库(library)、模块(module),包(package)的安装方法以及ImportError: No module named...
Python中,想要安装第三方安装包,即third library,package等,对于熟悉的人来说,很简单. 但是对于新手,至少对于之前的我,很难,往往只是安装一个很小的包,都被搞得一头雾水. 现 ...
- python urllib.request 爬虫 数据处理-python 爬虫之 urllib库
文章更新于:2020-03-02 注:代码来自老师授课用样例. 一.初识 urllib 库 在 python2.x 版本,urllib 与urllib2 是两个库,在 python3.x 版本,二者合 ...
- python urllib.request 爬虫 数据处理-Python网络爬虫(基于urllib库的get请求页面)
一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...
- Python 爬虫之urllib库的使用
urllib库 urllib库是Python中一个最基本的网络请求库.可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据. urlopen函数: 在Python3的urlli ...
- python爬虫入门urllib库的使用
urllib库的使用,非常简单. import urllib2response = urllib2.urlopen("http://www.baidu.com") print re ...
最新文章
- centos安装 TA-Lib
- oracle关闭rs,Oracle 关闭(shutdown immediate)时hang住
- java调用c so动态库_jni 调用C动态库dll/so
- vuejs项目如何修改node_mudule为公用文件?
- python修改html的td_python3修改HTMLTestRunner,生成有截图的测试报告,并发送测试邮件(二)...
- python入门三剑客_python数据分析三剑客基础之matpoltlib初解
- http://longshuai2007.blog.163.com/blog/static/1420
- 春考本科2018招计算机的学校,山东2018春季高考本科普通批一志愿院校投档情况统计表...
- Python3基本数据类型(一、数字类型)
- struct (5.31)
- CVS文件的常见操作
- 商业银行资产托管业务读书笔记
- SD卡被写保护怎么解除?
- TextView的setBounds()方法
- STRAIGHT分析合成算法
- todesk无法连接网络
- 《C语言及程序设计》实践参考——回文、素数
- 15种独一无二的创新数据可视化方式
- Gibbs Sampler
- 搜狗浏览器默认皮肤无法修改问题