Python学习日记4|python爬虫常见报错小结及解决方法
admin
2023-07-30 20:46:36
0

今天是4.18号。

上周五的时候参加了中国银联的暑期实习生笔试,然后收到通知说让周天早上去上海总部面试,自己又错过了那边打过来的电话,本想问可不可以视频面试的,结果是非常遗憾的没有去参加面试。本来暑期实习就不好找,怎么说最终还是怪自己。

论文还是没有出结果,大概还要等上一个星期吧,而python爬虫的学习也还要花差不多两周的时间。


首先声明下面的报错是在使用BeautifulSoup的基础上的
(1).list index out of range
这种情况基本就是你获取的列表为空,所以在选取第x各元素([x])时就会报错。

(2).requests 要对返回的状态码做判断
r=requests.get(url)
if r.status_code==200:

(3).异常
异常是指程序中的例外,违例情况。异常机制是指程序出现错误后,程序的处理方法。当出现错误后,程序的执行流程发生改变,程序的控制权转移到异常处理。可能情况有,比如写入文件的时候,磁盘满了,写不进去了;从网络抓取数据,网络突然断掉了;抓取数据时ip被封等等。

其他异常如写进文件时磁盘满了等情况在后面进行文件操作时才会涉及。单单就爬虫过程来看一般是在requests()过程中出现下面几种异常情况:
一、遇到网络问题时,Requests会抛出一个 ConnectionError 异常。
具体情况有两种:一是请求的网址错误或不存在;二是网络中断

二、遇到无效HTTP响应时,Requests则会抛出一个 HTTPError 异常。
具体情况有:服务器拒绝连接,即ip被封等
一般HTTPError又分为 4XX:客户端错误 和 5XX:服务器错误。

对于前两种异常通常使用try…exception…来解决,具体如下:

try:
    #这一部分写正常的运行语句    
    req=requests.get(url)
    ...
    ...
except (requests.ConnectionError, IndexError, UnicodeEncodeError,TimeoutError) 
    print(e.args)
except requests.HTTPError as f:
    print(\'The server couldn\\\'t fulfill the request.\')

ip被封处理办法


ip被封处理办法.png

三、若请求超时,则抛出一个 Timeout 异常。
具体情况有:网络断开,但经常显示无法连接;网络阻塞;网络不稳定,网络无法完整传送服务器信息;系统原因,系统资源过低,不足以

解决办法:
Timeout又分为connect timeout和read timeout。前者指的是你发出request请求到和服务器建立连接之间的等待时间;后者是同服务器建立连接后到服务器发回response之间的等待时间。那么在请求时可以加上相应的timeout时间,形式如下:
a).r = requests.get(\’https://XXXX.com\’, timeout=5)表示默认connect timeout和read timeout的值均为5秒;
b). r = requests.get(\’https://XXXX.com\’, timeout=(3.05, 27))表示connect timeout=3.05秒,read timeout=27秒;
c).r = requests.get(\’https://XXXX.com\’, timeout=None)则表示一直等待到服务器有响应为止。


此外再了解一些新的知识
(4).range()虽然返回的是一个整数列表,但不能直接进行赋值,例如a=range(10),而应该是a=list(range(10))

(5).用关键字lambda表示匿名函数,lambda x: x*x实际上就是:
def f(x):
return x * x
冒号前面的x表示函数参数。匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果;但用匿名函数也有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数。

最后附上:


python标准异常.png


四月木棉红.JPG

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...