最友好的网络爬虫库
1. requests库的安装
采用pip安装方式,在cmd界面输入:
pip install requests
2. 示例代码
我们将处理http请求的头部处理来简单进行反反爬虫处理,以及代理的参数设置,异常处理等。
1 import requests 2 3 4 def download(url, num_retries=2, user_agent=‘wswp‘, proxies=None): 5 ‘‘‘下载一个指定的URL并返回网页内容 6 参数: 7 url(str): URL 8 关键字参数: 9 user_agent(str):用户代理(默认值:wswp) 10 proxies(dict): 代理(字典): 键:‘http’‘https‘ 11 值:字符串(‘http(s)://IP’) 12 num_retries(int):如果有5xx错误就重试(默认:2) 13 #5xx服务器错误,表示服务器无法完成明显有效的请求。 14 #https://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81 15 ‘‘‘ 16 print(‘==========================================‘) 17 print(‘Downloading:‘, url) 18 headers = {‘User-Agent‘: user_agent} #头部设置,默认头部有时候会被网页反扒而出错 19 try: 20 resp = requests.get(url, headers=headers, proxies=proxies) #简单粗暴,.get(url) 21 html = resp.text #获取网页内容,字符串形式 22 if resp.status_code >= 400: #异常处理,4xx客户端错误 返回None 23 print(‘Download error:‘, resp.text) 24 html = None 25 if num_retries and 500 <= resp.status_code < 600: 26 # 5类错误 27 return download(url, num_retries - 1)#如果有服务器错误就重试两次 28 29 except requests.exceptions.RequestException as e: #其他错误,正常报错 30 print(‘Download error:‘, e) 31 html = None 32 return html #返回html 33 34 35 print(download(‘http://www.baidu.com‘))
结果:
1 Downloading: http://www.baidu.com 2 <!DOCTYPE html> 3 <!--STATUS OK--> 4 ... 5 </script> 6 7 <script> 8 if(navigator.cookieEnabled){ 9 document.cookie="NOJS=;expires=Sat, 01 Jan 2000 00:00:00 GMT"; 10 } 11 </script> 12 13 14 15 </body> 16 </html>