用python怎样爬网页呢?其实就是根据URL来获取它的网页信息!

我们在浏览器中看到的画面优美的界面,其实是由浏览器,对网页内容做了解释后,才呈现出来的类似word的WYSIWYG
实质它是一段HTML代码,加JS、CSS等。如果把网页比作一个人,那么HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服。最重要的部分是存在于HTML中的。


用一个例子来爬网页


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,服务器响应请求得到应答,这样显得逻辑上清晰明确。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值