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)

 

posted @ 2018-12-26 14:27  才华充电中  阅读(303)  评论(0编辑  收藏  举报