python 网络爬虫入门-Urllib库的基本使用

学习来源:http://www.cnblogs.com/xin-xin/p/4297852.html

1.分分钟扒一个网页下来

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

2.分析扒网页的方法

response = urllib2.urlopen("http://www.baidu.com")
print response.read()  //response对象有一个read方法,可以返回获取到的网页内容。

3.构造Request
上面的urlopen参数可以传入一个request请求,它其实就是一个Request类的实例,构造时需要传入Url,Data等等的内容。比如上面的两行代码,我们可以这么改写

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

运行结果是完全一样的,只不过中间多了一个request对象,推荐大家这么写,因为在构建请求时还需要加入好多内容,通过构建一个request,服务器响应请求得到应答,这样显得逻辑上清晰明确。

4.POST和GET数据传送

动态网站动态传递参数(如:登录注册)
数据传送分为POST和GET两种方式,两种方式有什么区别呢?

最重要的区别是:
1、显性 GET方式是直接以链接形式访问,链接中包含了所有的参数,当然如果包含了密码的话是一种不安全的选择,不过你可以直观地看到自己提交了什么内容。

import urllib
import urllib2
values={}
values['username'] = "1016903103@qq.com"
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()

2、隐性 POST则不会在网址上显示所有的参数,不过如果你想直接查看提交了什么就不太方便了,大家可以酌情选择。
实现post方法的传送:

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()

写法二,与上一种写法等价

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

猜你喜欢

转载自blog.csdn.net/anxixiaomu/article/details/59109711