pythonurllib2方法_Python使用urllib2抓取网页

使用Python的库urllib2,用到urlopen和Request方法。

方法urlopen原形❝ urllib2.urlopen(url[, data][, timeout]) 其中:url表示目标网页地址,可以是字符串,也可以是请求对象Requestdata表示post方式提交给目标服务器的参数timeout表示超时时间设置改方法返回一个类似文件的对象,有geturl()、info()、read()方法其中geturl()返回连接地址,info()返回网页信息。要获取网页内容可以使用read()方法,read也可以带参数,表示读取内容的大小(字节)。

import urllib2

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

content = socket.read()

socket.close()

这样,网页的内容(content)就爬下来了,但是有些网站禁止爬虫,如果直接请求会出现以下错误:urllib2.HTTPError: HTTP Error 403: Forbidden解决方法是可以在请求加上头信息,伪装成浏览器的访问行为,需要用到Request方法:方法Request原型❝ urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable])其中: url表示目标网页地址,可以是字符串,也可以是请求对象Requestdata表示post方式提交给目标服务器的参数headers表示用户标识,是一个字典类型的数据,有些不允许脚本的抓取,所以需要用户代理,像火狐浏览器的代理就是类似:Mozilla/5.0 (X11; U; Linux i686)Gecko/20071127 Firefox/2.0.0.11 浏览器的标准UA格式为:浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息 ,headers默认是Python-urllib/2.6origin_req_host表示请求方的主机域名或者ip地址

headers = {'User-Agent':'Mozilla/5.0 (X11; U; Linux i686)Gecko/20071127 Firefox/2.0.0.11'}

req = urllib2.Request(url="http://blog.csdn.net/deqingguo",headers=headers)

socket = urllib2.urlopen(req)

content = socket.read()

socket.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值