post请求参数常见:
1. application/json {“key1“:”value1”,“key2":“value2"}
2. application/x-www-form-urlencoded key1=value1&key2=value2
3. multipart/form-data 表单、文件上传、图片上传等
4. text/xml <!--?xml version="1.0"?-->...
5. Content-Type:octets/stream
post请求的body可以没有,以百度翻译为例: http://fanyi.baidu.com/v2transapi
url = "http://fanyi.baidu.com/v2transapi" param = { "from":"zh", "to":"en", "query": "今天天气怎么样" } req = requests.request("post", url, params=param) print(req.status_code) print(req.json())
https请求时 有时会报302重定向错误,增加verify=False
cookies
1·保存在客户端,一般由浏览器负责存储在本地。 2·通常是加密存储的,不过由于存储在本地,很难保证数据不被非法访问,并不怎么安全,所以cookies中不宜保存敏感信息,如密码等。 3·哪些信息需要保存作为cookie保存在客户端本地,保存多长时间,一般是由服务器决定的,所以HTTP协议中通过服务器返回的响应报文头中,有一个Set-Cookie域来指示浏览器或者其他客户端,在本地保存cookie信息。 4·cookie保存在客户端本地的目的是为了下次访问网站的时候可以直接取出来,上送服务器,所以HTTP协议中通过客户端发送给服务器的请求报文头中,有一个cookies域专门用于存放这个信息,以便客户端将cookie信息发送给服务器。
session
1.Session,中文一般翻译成“会话” 2.也是一种管理用户状态和信息的机制。 3.与Cookies将数据保存在客户端本地不同的是,Session的数据保存在服务器端,一般放在服务器的内存里。 4.客户端和服务端通过一个SessionID来进行沟通,为了防止不同的客户之间出现冲突和重复,这个SessionID一般是一个较长的随机字符串(一般32或者48个字节)。
session会话保持
1. 首先使用selenium获取cookies
cookies = driver.get_cookies() # 获取浏览器cookies
2. 新建一个session添加之前登录后的cookies
new_session = requests.session() # 新建session # 添加cookies到CookieJar req_cookie = requests.cookies.RequestsCookieJar() for i in cookies: req_cookie.set(i["name"], i['value']) new_session.cookies.update(req_cookie) # 更新session里cookies
3.使用Beautiful Soup 4分析结果
安装 pip install beautifulsoup4
from bs4 import BeautifulSoup BeautifulSoup(markup, “html.parser”)
soup = BeautifulSoup(html) # 创建 beautifulsoup 对象 soups = BeautifulSoup(open('index.html')) print(soup.prettify()) # 格式化输出 Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种: Tag:获取标签内容 NavigableString:获取文字.string BeautifulSoup:表示的是一个文档的全部内容,可以获取类型name,名称attrs Comment:特殊类型的 NavigableString 对象 遍历文档树 (1)find_all( name , attrs , recursive , text , **kwargs ) find_all() 方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件 CSS选择器
具体可以百度搜索相关搜索方法,推荐:https://cuiqingcai.com/1319.html
模拟在Mantis上查找所有提交的bug摘要
req = new_session.get("http://192.168.90.248/mantis/login_page.php") soup = BeautifulSoup(req.content, "html.parser") bugs = soup.select('span > a') print('bug:',bugs)
4. 保存到本地
这个就很简单了,一个个读出来处理下,write到本地txt中
token校验登录
待续