个人笔记,无其他意图
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 #响应头
获取网页源码的正确打开方式(依次试用即可)
response.content.decode()
response.content.decode("gbk")
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,能够请求成功。