0.采用requests库
虽然urllib库应用也很广泛,而且作为Python自带的库无需安装,但是大部分的现在python爬虫都应用requests库来处理复杂的http请求。requests库语法上简洁明了,使用上简单易懂,而且正逐步成为大多数网络爬取的标准。
1. requests库的安装
采用pip安装方式,在cmd界面输入:
pipinstall requests
2. 示例代码
我们将处理http请求的头部处理来简单进行反反爬虫处理,以及代理的参数设置,异常处理等。
importrequestsdefdownload(url, num_retries=2, user_agent='wswp', proxies=None):'''下载一个指定的URL并返回网页内容
参数:
url(str): URL
关键字参数:
user_agent(str):用户代理(默认值:wswp)
proxies(dict): 代理(字典): 键:‘http’'https'
值:字符串(‘http(s)://IP’)
num_retries(int):如果有5xx错误就重试(默认:2)
#5xx服务器错误,表示服务器无法完成明显有效的请求。
#https://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81
'''print('==========================================') print('Downloading:', url) headers = {'User-Agent': user_agent}#头部设置,默认头部有时候会被网页反扒而出错try: resp = requests.get(url, headers=headers, proxies=proxies)#简单粗暴,.get(url)html = resp.text#获取网页内容,字符串形式ifresp.status_code >=400:#异常处理,4xx客户端错误 返回Noneprint('Download error:', resp.text) html =Noneifnum_retriesand500<= resp.status_code <600:# 5类错误returndownload(url, num_retries -1)#如果有服务器错误就重试两次exceptrequests.exceptions.RequestExceptionase:#其他错误,正常报错print('Download error:', e) html =Nonereturnhtml#返回htmlprint(download('http://www.baidu.com'))
结果:
如果还有问题未能得到解决,搜索887934385交流群,进入后下载资料工具安装包等。最后,感谢观看!