[TOC]
- 原因:默认request访问一个请求会一直等待下去
- 解决:设置timeout和max_retries
- 原因:bs输出时默认以
UTF-8编码 - 解决:通过浏览器控制台查看网页所使用的编码,并通过
response.enconding='指定编码'设置
- 原因:文件写入时,windows打开文件默认以“gbk“编码的,造成不识别unicode字符
- 解决:打开文件时加参数
encoding='utf-8',例:f = open('./source/斗破苍穹.txt','a+',encoding='utf-8')
- 原因:python递归默认最大深度为997,超过则会报错
- 解决:通过
sys.setrecursionlimit设置递归最大深度,如sys.setrecursionlimit(10000) - 注意,即使设的递归深度再大,也会受限于计算机本身的计算能力、系统版本、python版本等
- 通过
header伪装浏览器访问 - 设置随机等待时间
- IP池
- 协程
- 多进程
- 分布式
- 如果爬虫中途出错,从断点处继续下载