为了方便对照,咱们先给程序加上注释
python
#!/usr/bin/env python # 告诉系统应该使用哪一个编译器来编译这个文件 # -*- coding: UTF-8 -*- # 使python程序支持中文编码格式 __author__ = '217小月月坑' # 这个程序的做者是谁,注意:先后都是两个 "_" import urllib2 # 导入urllib2 模块 ''' 1. 调用urllib2库里面的urlopen函数来请求打开一个网站,传入一个URL,这个URL就是你想要爬取的网站的网址 2. 执行urlopen函数以后,返回一个response对象,返回信息便保存在这里面 ''' response = urllib2.urlopen("http://python.jobbole.com/81339/") print response.read() # 使用read()方法将response对象的内容打印出来
好了,咱们发现咱们使用到了几个新的函数,如今来了解一下他们的做用是什么
服务器
1. 详解urlopen函数
urlopen通常接受三个参数,它的参数以下:
urlopen(url, data, timeout)
第一个参数url即为URL,第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间。
第二三个参数是能够不传送的,data默认为空None,timeout默认为 socket._GLOBAL_DEFAULT_TIMEOUT
这个函数将会是咱们前半部分学习的中心点,后面会慢慢讲解它的每一个参数的使用
2. 详解read()函数
read()函数是将response里面的内容读取出来,若是不加read()的话,就只是显示response的描述信息
socket
3. 另外一种更规范的写法
函数
urlopen参数能够传入一个request请求,它其实就是一个Request类的实例,构造时须要传入Url,Data等等的内容
咱们能够将前面的程序这样写:
学习
#!/usr/bin/env python # -*- coding: UTF-8 -*- __author__ = '217小月月坑' import urllib2 # 先构建一个请求 request = urllib2.Request ("http://python.jobbole.com/81339/") # 使用urlopen函数请求网页返回信息 response = urllib2.urlopen(request) print response.read()
这个写法的执行结果跟上一个彻底同样,可是好处是程序的逻辑更清晰。
由于在构建请求时还须要加入好多内容,经过构建一个request,服务器响应请求获得应答,这样显得逻辑上清晰明确。
咱们从此的学习都会使用这个写法,因此它很重要,尽可能理解,实在理解不了能够先把它背下
网站