该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

写代码总是会出异常的,尤其是爬虫这类程序,无法确保每次请求都能稳定地返回统一的结果,比如反爬虫策略提升、代理IP超时、程序异常等等,处理好这些问题,才能保证爬虫程序持续地运行下去。

一、反爬虫策略。这里不多说,之前有讨论过,可以参考之前的文章《爬虫如何有效突破网站的反爬机制?》。

二、超时设置。网络总是不会一如既往的稳定如一,可能代理IP某个时间不稳定,也可能目标服务器某个时间不稳定,还有自身机器的网络也可能不稳定,如果不设置好超时,程序也不好跑下去。

selenium+chrome的超时设置:

显式等待:、等待某个条件发生,然后再继续进行代码。

driver = webdriver.Firefox()

driver.get("http://somedomain/url_that_delays_loading")

try:

element = WebDriverWait(driver, 10).until( #这里修改时间

EC.presence_of_element_located((By.ID, "myDynamicElement"))

)

finally:

driver.quit()

隐式等待:是告诉WebDriver在尝试查找一个或多个元素(如果它们不是立即可用的)时轮询DOM一定时间。默认设置为0,一旦设置,将为WebDriver对象实例的生命期设置隐式等待。

driver = webdriver.Firefox()

driver.implicitly_wait(10) # seconds

driver.get("http://somedomain/url_that_delays_loading")

myDynamicElement = driver.find_element_by_id("myDynamicElement")

三、异常处理。是程序就会有异常,不管是什么程序,python使用try&except语句来处理异常。try&except语句不仅仅是要让其捕获异常更重要的是让其忽略异常,因为爬虫中的绝大多数异常可能重新请求就不存在,因此,发现异常的时候将其任务队列进行修复其实是个最省力的好办法。

try:

passhttp://www.***.com/***/#

#可能出错的语句

except Exception,e:

pass

#保留错误的url,留待下次重跑

print e

finally:

#无论是否处理了异常都继续运行

print time.ctime()

四、自重启设置。如果一个程序在某种情况下报错多次,或者运行时间够久远,那么其性能可能会下降,就像一台电脑一样,用的越久就越慢,重启不失为一个好办法。当然这是治标不治本,但无疑是最省力的方法之一,当满足设置的重启条件后,程序自重启,也是让程序持久运行的一个好方法。

python爬虫网络请求超时是什么意思_python爬虫怎么处理异常和超时?相关推荐

  1. python爬虫 - python requests网络请求简洁之道

    转自:python爬虫 - python requests网络请求简洁之道 requests简介 requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到 ...

  2. 爬虫网络请求之JS解密一(百度企业信用)

    爬虫网络请求之JS解密一(百度企业信用) 前言 反爬策略中最重要的一块领域就是在前端利用JS对数据请求参数进行加密或者数据隐藏(如大众点评的图像位移技术,即使使用代理也是无济于事,必须对JS进行驱动才 ...

  3. Python发送网络请求(requests)

    Python发送网络请求(requests) Python已经是广泛使用的脚本语言了,我们可以使用requests库进行网络请求. 在PyPI中搜索requests,就可以找到这个库 1. 安装 pi ...

  4. python爬虫网络请求超时_6、web爬虫讲解2—urllib库爬虫—基础使用—超时设置—自动模拟http请求...

    利用python系统自带的urllib库写简单爬虫 urlopen()获取一个URL的html源码 read()读出html源码内容 decode("utf-8")将字节转化成字符 ...

  5. Python爬虫网络请求 requests(get、post)

    Python网络请求模块 urllib Urllib 库,它是 Python 内置的 HTTP 请求库,也就是说我们不需要额外安装即可使用,它包含四个模块 第一个模块 request,它是最基本的 H ...

  6. python 大量网络请求_大规模异步新闻爬虫之网络请求函数的优化

    前面我们实现了一个简单的再也不能简单的新闻爬虫,这个爬虫有很多槽点,估计大家也会鄙视这个爬虫.上一节最后我们讨论了这些槽点,现在我们就来去除这些槽点来完善我们的新闻爬虫. 问题我们前面已经描述清楚,解 ...

  7. python发起网络请求模块【requests、selenium、urllib、urllib3】

    python网络请求四大模块[requests.selenium.urllib.urllib3] 1.requests 该模块为python第三方库,需要使用pip安装 安装 pip install ...

  8. python的网络请求

    原文链接:https://www.jianshu.com/p/f05d33475c78 urllib是Python中请求url连接的官方标准库,在Python2中主要为urllib和urllib2,在 ...

  9. python的网络请求库urllib、urllib2、urllib3、request的联系

    文章目录 1. 简介 2. urllib 3. urllib2 4. urllib3 5. requests 6. 相关文章 1. 简介 urllib.urllib2.urllib3.request均 ...

最新文章

  1. 给vim添加自动跳出括号的功能
  2. java web学习笔记-jsp篇
  3. leetcode345——Reverse Vowels of a String(C++)
  4. 意料之外,也是情理之中 - 我的自由职业之旅
  5. hdfs写数据流程分析
  6. android 屏幕坐标色彩,Android自定义View实现颜色选取器
  7. go-文件读写-db
  8. 剑指offer——面试题37:两个链表的第一个公共结点
  9. 【车牌识别】基于matlab投影模板匹配车牌识别【含Matlab源码 1359期】
  10. 不吼不叫:该如何平静地和孩子合作?
  11. 浪潮服务器显示一个红色闪电图标,华为手机开不了机,只显示一个红色圆圈里面一个红色闪电符号...
  12. 什么是多道程序设计技术,试述多道程序运行的特征。
  13. 详细了解一下股票量化交易接口股
  14. DICOM世界观·第二章 数字(D)、成像(I)与通讯(Co)
  15. 如何远程唤醒(WOL)主板为技嘉(gigabyte)的B85M-D3H的linux主机
  16. 英语思维(世界观,中英文思维的差别)
  17. 猫哥教你写爬虫 041--模拟登录-cookie
  18. sp_helpfile
  19. Linux基础知识与实操-篇三: 文件压缩打包与vim基本使用
  20. 重庆大学计算机信息管理基础2013,重庆大学计算机信息管理基础课程考试试卷B.doc...

热门文章

  1. nginx利用proxy_cache来缓存文件
  2. Redis和Memcache区别,优缺点对比
  3. 【Java多线程】Join的使用、如何使用getState()查看线程的状态
  4. 汇编语言 用push指令将a段中的前8个字形数据,逆序存储到b段中
  5. 计算机编码规则之:Base64编码
  6. java 8 Streams简介
  7. 关于Arrays类中toArray方法的总结
  8. 产品经理必懂的技术那点事儿 pdf_培养一个合格的产品经理需要多少钱?
  9. UnpooledHeadByteBuf源码分析
  10. es最新的集群选举策略