Python爬虫入门三urllib库基本使用

urllib是一个收集了多个涉及了URL的模块的包:

URL获取网页

urllibtest.py

import urllib2
response = urllib2.urlopen('http://www.baidu.com')
print(response.read())

运行结果:

C:\Python27\python.exe H:/spiderexercise/spidertest/urllibtest.py

    
    

urlopen()一般接受三个参数。
urlopen(url, data, timeout)
第一个参数 url 即为 URL,第二个参数 data 是访问 URL 时要传送的数据,第三个 timeout 是设置超时时间。 第二三个参数是可以不传送的,data 默认为空 None,timeout 默认为 socket._GLOBAL_DEFAULT_TIMEOUT 第一个参数 URL 是必须要传送的,在这个例子里面我们传送了百度的 URL,执行 urlopen 方法之后,返回一个 response 对象,返回信息便保存在这里面。
response 对象有一个 read 方法,可以返回获取到的网页内容。
print(response.read())

构造request获取网页

urlopen()参数可以传入一个request请求,即Request类的实例。构造request时传入URL,Data。

urllibtest.py

import urllib2
url = "http://www.baidu.com"
request = urllib2.Request(url)
response = urllib2.urlopen(request)
print(response.read())

POST和GET数据传送

数据传送分为 POST 和 GET 两种方式,两种方式有什么区别呢? 最重要的区别是 GET 方式是直接以链接形式访问,链接中包含了所有的参数,当然如果包含了密码的话是一种不安全的选择,不过你可以直观地看到自己提交了什么内容。POST 则不会在网址上显示所有的参数,不过如果你想直接查看提交了什么就不太方便了
POST方式
我们引入了 urllib 库,现在我们模拟登陆 CSDN

urllibtest.py

import urllib
import urllib2

values = {"username":"[email protected]","password":"XXXX"}
data = urllib.urlencode(values) 
url = "https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn"
request = urllib2.Request(url,data)
response = urllib2.urlopen(request)
print(response.read())

当然上述代码可能登陆不进去,因为 CSDN 还有个流水号的字段,没有设置全,比较复杂在这里就不写上去了,在此只是说明登录的原理。一般的登录网站一般是这种写法。 我们需要定义一个字典,名字为 values,参数我设置了 username 和 password,下面利用 urllib 的 urlencode 方法将字典编码,命名为 data,构建 request 时传入两个参数,url 和 data,运行程序,返回的便是 POST 后呈现的页面内容。
GET方式
至于 GET 方式我们可以直接把参数写到网址上面,直接构建一个带参数的 URL 出来即可。

import urllib
import urllib2

values={}
values['username'] = "[email protected]"
values['password']="XXXX"
data = urllib.urlencode(values) 
url = "http://passport.csdn.net/account/login"
geturl = url + "?"+data
request = urllib2.Request(geturl)
response = urllib2.urlopen(request)
print(response.read())

可以 print geturl,打印输出一下 url,发现其实就是原来的 url 加?然后加编码后的参数

http://passport.csdn.net/account/login?username=1016903103%40qq.com&password=XXXX

你可能感兴趣的:(Python爬虫入门三urllib库基本使用)