我们在浏览器中看到的画面优美的界面,其实是由浏览器,对网页内容做了解释后,才呈现出来的类似word的WYSIWYG


实质它是一段HTML代码,加JS、CSS等。如果把网页比作一个人,那么HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服。最重要的部分是存在于HTML中的。


网页批操作 python 用python操作网页_url



用一个例子来爬网页





import urllib2 

 response = urllib2.urlopen("http://www.baidu.com") 

 print response.read()


这个例子中,真正的程序就两行,把它保存成demo.py,进入该文件的目录,执行如下命令查看运行结果。


python demo.py


可以看到这个网页的源码已经被爬下来了。




网页爬取方法




那么我们来分析这几行Python代码:


import urllib2 

 response = urllib2.urlopen("http://www.baidu.com") 

 print response.read()




第2行


response = urllib2.urlopen("http://www.baidu.com")


首先我们调用的是urllib2库里面的urlopen方法,传入一个URL


这个网址是百度首页,协议是HTTP协议


当然你也可以把HTTP换做FTP,FILE,HTTPS 等等,只是代表了一种访问控制协议




三个参数


urlopen一般接受三个参数,它的参数如下:


urlopen(url, data, timeout)


第一个参数url即为URL,第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间。


第一个参数URL是必须要传送的,本例里传送了百度的URL


第二三个参数可以不传,


data默认为空None


timeout默认为socket._GLOBAL_DEFAULT_TIMEOUT




执行urlopen方法之后,返回一个response对象,返回信息便保存在这里面。


print response.read()


response对象有一个read方法,可以返回获取到的网页内容。




第3行


print response.read()


如果不加read直接打印会是什么?


直接打印出了该对象的描述


<addinfourlat 139728495260376 whose fp= <socket._fileobjectobject at 0x7f1513fb3ad0>>


所以一定要加read方法




构造Requset


其实上面的urlopen参数,可以传入一个request请求


它其实就是一个Request类的实例,构造时需要传入Url,Data等等的内容。




比如上面的三行代码,我们可以这么改写


import urllib2 

 request = urllib2.Request("http://www.baidu.com") 

 response = urllib2.urlopen(request) 

 print response.read()




运行结果是完全一样的,只不过中间多了一个request对象


推荐大家这么写,因为在构建请求时还需要加入好多内容


通过构建一个request,服务器响应请求得到应答,这样显得逻辑上清晰明确。