requests请求方式
get请求
requests.get()
post请求
requests.post()
根据浏览器的Request Method字段来确定请求方式
requests请求参数
url
请求网址
headers
传递请求头部信息
data
传递数据信息 一般用于post请求
cookies
传递cookies信息
proxies
传递代理信息
timeout
设置超时
timeout=3
response响应
查看返回数据
response.text
根据返回体内容自动进行二进制数据转换
response.content
接受是二进制数据,需要手动转换
decode() 默认是utf-8格式
查看响应状态
response.status_code
查看请求头部信息
response.request.header
查看响应头部信息
response.header
查看编码格式
response.encoding
模块
json
转换json数据为python数据类型
json.loads(json_str)
logging
写错误日志
importlogging
#创建一个logging的实例logger
logger=logging.getLogger('Richard')
#设定全局日志级别为DEBUG
logger.setLevel(logging.INFO)
#创建一个屏幕的handler,并且设定级别为DEBUG
ch=logging.StreamHandler()
ch.setLevel(logging.DEBUG)
#创建一个日志文件的handler,并且设定级别为DEBUG
fh=logging.FileHandler("access.log")
fh.setLevel(logging.INFO)
#设置日志的格式
formatter=logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
#add formatter to ch and fh
ch.setFormatter(formatter)
fh.setFormatter(formatter)
#add ch and fh to logger
logger.addHandler(ch)
logger.addHandler(fh)
#'application' code
logger.debug("debug message")
logger.info("info message")
logger.warning("warn message")
logger.error("error message")
logger.critical("crititcal message")
retrying
控制请求次数,一般应用于请求函数
fromretryingimportretry
@retry(stop_max_attempt_number=3)# 控制请求次数
defparse(self):
print(1111)
r=requests.get(self.url,headers=self.headers,proxies=self.proxies,timeout=2)
print(r.content.decode())
错误处理
try:
代码
assert判断条件
exceptExceptionase:
print(e)# 打印异常内容
其他操作
反爬处理
使用代理
使用random获取随机代理ip
importrandom# 产生随机数
proxies_list=[{'http':'http://47.91.19.8:8080'},{'http':'http://47.91.139.78:8080'},{'http':'http://47.91.19.78:80'},{'http':'http://147.99.139.78:8080'}]
# 第一种方式
a=proxies_list[random.randint(0,len(proxies_list)-1)]
print(a)
# 第二种方式
b=random.choice(proxies_list)
print(b)
使用随机User-Agent
和使用随机ip的方式一样
减少请求次数
sleep()
fromtimeimportsleep
sleep(3)