1.urllib2库的使用示例php
>>> import urllib2 >>> response=urllib2.urlopen('http://www.baidu.com')#获取网页信息 >>> print response.read()#打印出网页信息
首先咱们调用的是urllib2库里面的urlopen方法,传入一个URL,这个网址是百度首页,协议是HTTP协议,固然你也能够把HTTP换作FTP,FILE,HTTPS 等等,只是表明了一种访问控制协议。html
2.分析程序信息python
(1)第一句程序是导入urllib2库安全
(2)第二句咱们主要看一下urlopen这个函数socket
做用:打开一个网页信息函数
格式:post
urlopen(url,data,timeout)
参数:三个参数,一个必传参数URL,两个参数(date,timeout)网站
第二三个参数是能够不传送的,data默认为空None,timeout默为 socket._GLOBAL_DEFAULT_TIMEOUTui
第一个参数URL是必需要传送的,在这个例子里面咱们传送了百度的URL,执行urlopen方法以后,返回一个response对象,返回信息便保存在这里面。url
(3)第三句是把urlopen获取到的网页信息,打印出来(response对象有一个read方法,能够返回获取到的网页内容。)
response.read()
response对象有一个read方法,能够返回获取到的网页内容
不加read打印出来的结果,直接打印出了该对象的描述,因此记得必定要加read方法
<addinfourl at 139728495260376 whose fp = <socket._fileobject object at 0x7f1513fb
3.构造一个request
import urllib2 request=urllib2.Request("http://www.baidu.com") response=urllib2.urlopen(request) print response.read()
推荐你们这样写,这个程序反应出爬虫的基本过程。
上面的程序演示了最基本的网页抓取,不过,如今大多数网站都是动态网页,须要你动态地传递参数给它,它作出对应的响应。因此,在访问时,咱们须要传递数据给它。
数据传送分为POST和GET两种方式,最重要的区别是GET方式是直接以连接形式访问,连接中包含了全部的参数,固然若是包含了密码的话是一种不安全的选择,不过你能够直观地看到本身提交了什么内容。POST则不会在网址上显示全部的参数,不过若是你想直接查看提交了什么就不太方便了,你们能够酌情选择。
post方法:
1.首先构建一个url 2.传递动态信息给url 3.构建一个request 4.构建一个response #代码——登录知乎客户端 import urllib2 value={"username":"1590110xxxx","password":"xx12341234"} date=urllib2.urlencode(value) url="https://www.zhihu.com/" request=urllib2.Request(url,date) response=urllib2.urlopen(request) print response.read()
get方法:
import urllib2 values={'username':'159xxxxxxxx','password':'xx12341234'} date=urllib2.urlencode(values) url='https://www.zhihu.com/' geturl=url+'?'+date request=urllib2.Request(url) response=urllib2.urlopen(request) print response.read()
本文章参考崔庆才博客。
http://python.jobbole.com/81336/