python爬虫之requests
requests
requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多
一、用法
1、各种请求方式
import requests
requests.get('http://httpbin.org/get')
requests.post('http://httpbin.org/post')
requests.put('http://httpbin.org/put')
requests.delete('http://httpbin.org/delete')
requests.head('http://httpbin.org/get')
requests.options('http://httpbin.org/get')
2、url参数
方法1.直接放在url
import requests response = requests.get(http://httpbin.org/get?name=gemey&age=22) print(response.text)
方法2.params传参,放在一个字典中
import requests
data = {
'name': 'tom',
'age': 20
}
response = requests.get('http://httpbin.org/get', params=data)
print(response.text)
3、添加头信息
import requests
heads = {}
heads['User-Agent'] = 'Mozilla/5.0 ' \
'(Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 ' \
'(KHTML, like Gecko) Version/5.1 Safari/534.50'
response = requests.get('http://www.baidu.com',headers=headers)
二、属性
r.status_code
http请求的返回状态,200表示连接成功,404表示连接失败
r.text
http响应内容的字符串形式,url对应的页面内容
r.encoding
从HTTP header中猜测的响应内容编码方式
r.apparent_encoding
从内容分析出的响应内容的编码方式(备选编码方式)
r.content
HTTP响应内容的二进制形式
r.headers
http响应内容的头部内容
r..cookies
获取cookie
r.Session
会话维持
三、解析数据
1、解析json
import requests
response = requests.get('http://httpbin.org/get')
print(response.text)
print(response.json()) #response.json()方法同json.loads(response.text)
print(type(response.json()))
2、保存二进制文件
import requests
response = requests.get('http://img.ivsky.com/img/tupian/pre/201708/30/kekeersitao-002.jpg')
b = response.content
with open('F://fengjing.jpg','wb') as f:
f.write(b)
四、一些注意事项
1、SSL证书验证错误
报错
requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines',
'tls_process_server_certificate', 'certificate verify failed')],)",)
解决:添加参数verify=False
response = requests.get(url,verify=False)
2、用户user-agent过于频繁
有些网站会统计单个user-agent单位时间访问服务器的次数。
安装fake_useragent库
pip install fake_useragent # 安装ua库
使用
from fake_useragent import UserAgent
import requests
url = 'https://www.baidu.com/'
ua = UserAgent().random
header = {
'User-Agent': ua
}
response = requests.get(url, headers=header, verify=False)
3、使用代理
为了保护自己,也为了提高爬虫的效率,安全度高,可以使用代理,但是成本高。
import requests
proxies = {'http': 'socks5://172.0.0.0:0', 'https': 'socks5://172.0.0.0:0'}
response = requests.get(urln,proxies=proxies)
4、在headers中添加Referer
为了防反爬,可以在headers里加上目标网址
url = 'https://www.baidu.com/'
ua = UserAgent().random
header = {
'Referer': 'https://www.baidu.com/',
'User-Agent': ua
}
response = requests.get(url, headers=header, verify=False)
5、增加异常判断
try:
res = requests.get(url=url,headers=header)
print(res.text)
except Exception as r:
print('error:',r)

浙公网安备 33010602011771号