当你在浏览器中的地址栏输入网址后发生的事情
- 输入地址后,浏览器通过DNS服务器查找域名对应的IP地址。
** 域名可以理解为一个艺名,真正起作用的其实是IP地址,因为域名比较容易记住,所以才得以应用。**
- 接下来服务端向IP地址所对应的服务器发送请求。
- web服务器相应请求,并返回一个HTML页面给浏览器,其实只是一个文档。
- 然后浏览器解析了这个html文件,用户才得以看见网页效果。
流程如下:
Python爬虫小试牛刀
import urllib2
# 创建Request实例对象,请求url地址
request = urllib2.Request("http://www.baidu.com/")
# 服务器返回请求的数据
response = urllib2.urlopen(request)
# 拿到自己想要额头信息
header = request.get_header("User-agent") # 注意这里的agent首字母小写,真正的请求头中是大写的
print header # 可以打印出请求头中的"User-agent"信息,参数可以是任意头部字段名
print response.getcode() # 可以打印出请求后的状态码
Request对象一般有三个参数,(url,[data,headers]).
headers是用来传入自己定义的头部信息,参数为字典类型。
比如:我们更改"User-agent",如果不更改的话,默认就是python的版本信息。
查看默认的信息可以去/usr/lib/python2.7/urllib2.py查看OpenerDirecter
这个类下client_version
这个属性,发现是用Python-urllib/
与版本号进行的拼接。
urllib.urlencode()注意点
- 当使用urllib.urlencode()时,如果传入的参数为:{"kw":123,"pn":456}
那么转码后url中会自动加上&
,如果字典内只有一个键值对,那么需要自己手动加上。
>>> import urllib
>>> keyword = {"kw":123}
>>> keyword1 = {"kw":123, "pn":456}
>>> urllib.urlencode(keyword)
'kw=123'
>>> urllib.urlencode(keyword1)
'pn=456&kw=123'
>>>
编码工作使用urllib的urlencode()函数,帮我们将key:value这样的键值对,转换成"key=value"这样的字符串,解码工作可以使用urllib的unquote()函数。( 注意,不是urllib2.urlencode())