在字典中, 使用 open 打开一个图片文件, 当做要上传的文件,把这个字典放入 post 里面的 files 参数. 就能上传图片,网页会返回一个页面, 将图片名显示在上面.
file ={'uploadFile':open('./image.png', 'rb')}r = requests.post('http://pythonscraping.com/files/processing2.php', files=file)print(r.text)# The file image.png has been uploaded.
登录
登录账号, 浏览器做了:
1.使用 post 方法登录了第一个红框的 url
2.post 的时候, 使用了 Form data 中的用户名和密码
3.生成了一些 cookies
因为打开网页时, 每一个页面都是不连续的, 没有关联的, cookies 就是用来衔接一个页面和另一个页面的关系
用 requests.post + payload 的用户信息发给网页, 返回的 r 里面会有生成的 cookies 信息.
请求去登录后的页面时, 使用 request.get, 并将之前的 cookies 传入到 get 请求. 就能以登录的名义访问 get 的页面.
payload ={'username':'Morvan','password':'password'}r = requests.post('http://pythonscraping.com/pages/cookies/welcome.php', data=payload)print(r.cookies.get_dict())# {'username': 'Morvan', 'loggedin': '1'}r = requests.get('http://pythonscraping.com/pages/cookies/profile.php', cookies=r.cookies)print(r.text)# Hey Morvan! Looks like you're still logged into the site!
使用 Session 登录
创建完一个 session 过后, 直接只用 session 来 post 和 get.
而且这次 get 的时候, 并没有传入 cookies. 但是实际上 session 内部
就已经有了之前的 cookies
session = requests.Session()payload ={'username':'Morvan','password':'password'}r = session.post('http://pythonscraping.com/pages/cookies/welcome.php', data=payload)print(r.cookies.get_dict())# {'username': 'Morvan', 'loggedin': '1'}r = session.get("http://pythonscraping.com/pages/cookies/profile.php")print(r.text)# Hey Morvan! Looks like you're still logged into the site!