Spider Note2 requests模块

个人笔记,无其他意图

requests模块的学习

发送get请求,post请求获取响应

response = requests.get(url) #发送get请求,获取url地址的响应
response = requests.post(url, data = {请求体的字典}) #发送post请求

获取响应内容的方法(承接上面,响应用response表示)

response.text
该方式往往会出现乱码,出现乱码使用response.encoding = "utf-8"
response.content.decode()
默认解码方式为UTF-8,把响应的二进制字节转换为字符串类型
response.request.url #发送请求的url地址
response.url #response响应的url地址
response.request.headers #请求头
response.headers #响应头

获取网页源码的正确打开方式(依次试用即可)

  1. response.content.decode()
  2. response.content.decode("gbk")
  3. response.text

发送带Header的请求

  • 为了模拟浏览器,获取和浏览器一模一样的内容
# 一般headers添加一个User-Agent可能就够了,如果不够再继续添加,一般最后添加Cookie
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER", 
"Referer":"https://www.duba.com/?f=liebao"
...
"Cookie":"...自行添加..."
}
response = requests.get(url, headers=headers)

使用超时参数

requests.get(url, headers=headers, timeout=3) #3秒内必须返回响应,否则会报错

retrying模块的学习

  • 可封装起来,以后直接调用
import requests
from retrying import retry
'''
It is a way that requesting adress of url 
'''
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER"
}
@retry(stop_max_attempt_number=3) #让被装饰的函数反复执行三次,三次全部报错才会报错,中间有一次正确就通过
def _parse_url(url):
	response = requests.get(url, headers=headers, timeout=5)
	return response.content.decode()

def parse_url(url):
	try:
		html_str = _parse_url(url)
	except:
		html_str = none #url地址打不开返回none
	return html_str

if __name__ == '__main__':
	url = '...输入网址...'
	print(parse_url(url))

处理Cookie相关请求

  • 直接携带Cookie请求URL地址
    • Cookie放在headers中
    headers = {
    "User-Agent":"...", 
    "Cookie":"... Cookie 字符串 ..."
    }
    
    • Cookie字典传给Cookies参数
    requests.get(url, cookies=cookie_dict)
    
  • 先发送post请求,获取Cookie,带上Cookie请求登录后的页面
    session = requests.session() #实例化session,使session具有的方法和requests一样
    session.post(url,data,headers)	#服务器设置在本地的Cookie会被保存在session
    session.get(url) #会带上之前保存在session中的Cookie,能够请求成功。
    

猜你喜欢

转载自blog.csdn.net/l_changyun/article/details/84787007