c 抓取网页数据( 方法urlopen原形❝urllib2.HTTPError:超时时间设置改方法返回网页信息 )
优采云 发布时间: 2022-02-18 16:14c 抓取网页数据(
方法urlopen原形❝urllib2.HTTPError:超时时间设置改方法返回网页信息
)
使用 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()
这样,网页的内容就被爬下来了,但是有的网站禁止爬虫。如果直接请求,会出现如下错误: urllib2.HTTPError: HTTP Error 403: Forbidden 解决方法是在 request 中添加头信息来伪装浏览器的访问行为,需要使用 Request 方法:
方法请求原型❝ urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable]) 其中:url表示目标网页的地址,可以是字符串,也可以是request object Requestdata post方法中提交给目标服务器的参数headers代表用户ID,是字典类型的数据。其中一些不允许脚本爬取,所以需要一个用户代理,比如火狐浏览器的代理:Mozilla/5.0 (X11; U; Linux i686)Gecko/20071127 Firefox/ 2.0.0.11 浏览器标准UA格式为:浏览器ID(操作系统ID;加密级别标识;浏览器语言) 渲染引擎标识版本信息,默认headers为Python -urllib/2.
❞
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()