05-访问超时设置 | 01.数据抓取 | Python

简介:

05-访问超时设置

郑昀 201005 隶属于《01.数据抓取》小节

设置 HTTP 或 Socket 访问超时,来防止爬虫抓取某个页面时间过长。

 

pycurl 库的调用中,可以设置超时时间:

c.setopt(pycurl.CONNECTTIMEOUT, 60)

 

在 Python 2.6 版本下,httplib 库由于有如下构造函数:

class HTTPConnection:

    def __init__(self, host, port=None, strict=None, 
             timeout=socket._GLOBAL_DEFAULT_TIMEOUT): 
        self.timeout = timeout

所以可以设置:

 

>>> h3 = httplib.HTTPConnection('www.cwi.nl', 80, timeout=10)
 
参见文档 #2452: timeout is used for all blocking operations :


如果通过 HTTPConnection 或 HTTPSConnection 的构造函数给定超时时间,那么阻塞操作(如试图建立连接)将会超时。如果没有给或者赋值 None ,那么它将使用全局的超时时间设置。

Python 2.5 下,因为 HTTPConnection 类的 __init__ 函数没有 timeout 参数,所以通过一个隐藏很深的函数:

httplib.socket.setdefaulttimeout(3)#输入参数单位貌似是分钟

来设置超时。

 

设置全局超时

最后,抓取时如果实在找不到什么函数能设置超时时间,那么可以设置全局的 socket 超时,虽然这样做不大合适:

>>> import socket 
>>> socket.setdefaulttimeout(90)

setdefaulttimeout() was a hack to allow to set the timeout when nothing else is available.

如何捕获超时异常?

举例:

from urllib2 import urlopen 
import socket

slowurl =”http://www.wenxuecity.com/”

socket.setdefaulttimeout(1)

try: 
    data = urlopen(slowurl) 
    data.read() 
except socket.error: 
    errno, errstr = sys.exc_info()[:2] 
    if errno == socket.timeout: 
        print "There was a timeout" 
    else: 
        print "There was some other socket error"

 

目录
相关文章
|
1月前
|
数据可视化 IDE 数据挖掘
Python助您洞察先机:2024年A股市场数据抓取与分析实战
【10月更文挑战第1天】随着2024年中国股市的强劲表现,投资者们对于如何高效获取并分析相关金融数据的需求日益增长。本文旨在介绍如何利用Python这一强大的编程语言来抓取最新的A股交易数据,并通过数据分析技术为个人投资决策提供支持。
234 1
|
2月前
|
SQL JavaScript 前端开发
基于Python访问Hive的pytest测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Python、来开发Hive应用的方法,产生的代码如下
69 6
基于Python访问Hive的pytest测试代码实现
|
2月前
|
API Python
使用Python requests库下载文件并设置超时重试机制
使用Python的 `requests`库下载文件时,设置超时参数和实现超时重试机制是确保下载稳定性的有效方法。通过这种方式,可以在面对网络波动或服务器响应延迟的情况下,提高下载任务的成功率。
149 1
|
2月前
|
机器学习/深度学习 JSON API
HTTP协议实战演练场:Python requests库助你成为网络数据抓取大师
在数据驱动的时代,网络数据抓取对于数据分析、机器学习等至关重要。HTTP协议作为互联网通信的基石,其重要性不言而喻。Python的`requests`库凭借简洁的API和强大的功能,成为网络数据抓取的利器。本文将通过实战演练展示如何使用`requests`库进行数据抓取,包括发送GET/POST请求、处理JSON响应及添加自定义请求头等。首先,请确保已安装`requests`库,可通过`pip install requests`进行安装。接下来,我们将逐一介绍如何利用`requests`库探索网络世界,助你成为数据抓取大师。在实践过程中,务必遵守相关法律法规和网站使用条款,做到技术与道德并重。
51 2
|
2月前
|
数据采集 存储 数据挖掘
如何利用Python进行网页数据抓取
本文将详细介绍如何使用Python进行网页数据抓取。首先,我们将了解什么是网络爬虫以及其基本原理。然后,逐步讲解如何使用Python的requests库和BeautifulSoup库来抓取和解析网页数据。最后,通过实例展示如何实际应用这些技术来获取所需的数据并进行简单的数据处理。希望通过这篇文章,读者能够掌握基本的网页数据抓取技巧,并能在实际应用中灵活运用。
74 1
|
2月前
|
NoSQL JavaScript Java
Java Python访问MongoDB
Java Python访问MongoDB
22 4
|
2月前
|
开发者 Python
Python POST 请求超时配置
Python POST 请求超时配置
WK
|
2月前
|
存储 安全 索引
如何在Python中访问字典中的值
在Python中,访问字典(Dictionary)中的值非常简单。字典是一种无序的集合,它存储了键值对(key-value pairs),其中每个键都是唯一的,并映射到一个值上。要访问字典中的值,你需要使用键作为索引。
WK
40 0
|
3月前
|
移动开发 Java 编译器
什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
50 1
|
3月前
|
机器学习/深度学习 开发工具 Python
【Azure 应用服务】使用Python Azure SDK 来获取 App Service的访问限制信息(Access Restrictions)
【Azure 应用服务】使用Python Azure SDK 来获取 App Service的访问限制信息(Access Restrictions)