Python 3来抓取网页

用Python来抓取网页是很容易的,前面也写过很多类似的内容,但在Python3.0中,内容多多少少有些不同,下面进行一下介绍.

简单的抓取网页:

  1. import urllib.request  
  2. url="http://google.cn/"  
  3. response=urllib.request.urlopen(url)  
  4. page=response.read()  

这样虽然简单,但如果需要进一步精细的控制就略显不足了,在Python 3.0中,将2.x中urllib和urllib2进行了整合,使得抓取网页变得足够的简单了.具体的,大家都知道,网页抓取实际上分为2步:第一步是发出请求,第二步接收服务器返回的数据,在Python中也是这么做的.

  1. import urllib.parse  
  2. import urllib.request  
  3.   
  4. url="http://liuxin-blog.appspot.com/messageboard/add"  
  5.   
  6. values={"content":"命令行发出网页请求测试"}  
  7. data=urllib.parse.urlencode(values)  
  8.  
  9. #创建请求对象  
  10. req=urllib.request.Request(url,data)  
  11. #获得服务器返回的数据  
  12. response=urllib.request.urlopen(req)  
  13. #处理数据  
  14. page=response.read()  

上面的是POST的数据,众所周知,还有一种GET的,怎么做了?

  1. import urllib.parse  
  2. import urllib.request  
  3.   
  4. url="http://www.google.cn/webhp"  
  5.   
  6. values={"rls":"ig"}  
  7. data=urllib.parse.urlencode(values)  
  8.   
  9. theurl=url+"?"+data  
  10. #创建请求对象  
  11. req=urllib.request.Request(theurl)  
  12. #获得服务器返回的数据  
  13. response=urllib.request.urlopen(req)  
  14. #处理数据  
  15. page=response.read()  

上面2个例子中的response对象有2个常用的方法,geturl(),info()

geturl()的设置是为了辨别是否有服务器端的网址重定向,而info()则包含了一系列的信息.

另外一个重要的内容就是错误处理了,这里错误处理比较简单,贴个代码大家自己琢磨吧

  1. from urllib.request import Request, urlopen  
  2. from urllib.error import URLError, HTTPError  
  3. req = Request(someurl)  
  4. try:  
  5.     response = urlopen(req)  
  6. except HTTPError, e:  
  7.     print('The server couldn/'t fulfill the request.')  
  8.     print('Error code: ', e.code)  
  9. except URLError, e:  
  10.     print('We failed to reach a server.')  
  11.     print('Reason: ', e.reason)  
  12. else:  
  13.     # everything is fine  

最后一个是关于认证的了,网页认证如果大家有相关的网址请发一个过来(没有测试不方便发),关于Cookie认证的以后再写

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值