- 或许会持续更新(咕咕咕)
- 遇到的问题会分类总结
r=requests.get(url, headers=header)
;header必须是dict,这样能够在请求时带上给定的请求头time.sleep(random.randint(a,b))
来暂停一个随机时间proxies=proxy
,proxy应该是一个dict,形式为{'ip':'port'},能够有多个IP代理import requests r = requests.get(url) r.encoding = r.apparent_encoding
这种方法自动猜想可能的编码方式,并用这种编码方式编码响应体。可是猜想会存在必定的错误,自动选择编码方式会没法编码某些特殊的字符,好比简体中文、繁体中文html
<meta http-equiv='Content-Type' content='text/html; charset=gbk'>
里的charset字符集为gbk。此时,r.encoding='gbk'
就能够选择gbk编码open()
时,带上encoding=参数,指定编码方式encoding='utf-8'
,便可解决verify='\path\of\CAbundle'
参数来使用本地证书验证,也能够简单指定为verify=False
不进行验证urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
关掉这个警告requests.DEFAULT_RETRIES = 10
来修改requests库默认的重试次数,在网络情况不佳或是对方服务器性能不高致使请求失败时使用stream=True
,实现流式下载,在请求大文件时使用简单使用ThreadPoolExecutor便可解决。python
from future import ThreadPoolExecutor with ThreadPoolExecutor(max_workers=int) as pool: # 声明了一个线程池 pool.map(func, 可迭代数据结构如list)
须要考虑对临界区资源进行加锁,可使用l=threading.lock()
来声明一个锁,l.acquire()
来加锁,l.release()
来解锁浏览器