cookie简介
我们在清理浏览器信息的时候都会有这么一个选项:清除cookie和保存的网站数据
这是因为大多数网站都倾向于使用cookie来处理身份验证
我们可以通过post提交表单后返回一个私有的cookie
然后通过这个cookie来使用get登录到刚刚本来需要提交表单的网站
import requests
"""该程序用于模拟登录开心网"""
url = 'http://login.kaixin001.com/' # 目标地址
params = {
'email': '******@163.com',
'password': '******'
} # 表单
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362'}
# 构造header模拟登录
def get_http(url, params, headers):
html = requests.post(url, data=params, headers=headers)#提交表单
print(html.status_code)# 返回状态码
print(html.cookies)# 返回cookie
r = requests.get(url, params={'p': 'protected'}, cookies=html.cookies)
# 使用cookie再次登陆
print(r.text) # 打印爬取的登录后的内容
get_http(url, params, headers)
cookie十分重要!!!不要轻易泄露自己的私人cookie给他人哟!
session对象
我们可以创建session对象来完成get和post的操作,而且操作会更加方便:
my_session = requests.Session()
my_session.headers.update(headers) # 一次性将该对象的全局头字段设置好
r = my_session.post(url, params) # 在后台自动处理cookie
r = my_session.get(url)
print(r.text)
my_session.cookies.clear() # 用于清理cookie
实战:下载图片
当然我们可以通过右击鼠标另存为来保存一张图片
但是使用代码来下载图片还是非常使用的特别是批量下载图片时
这里的图片一般是二进制数据,不能使用Unicode文本表示,所以我们应该使用content来替代text属性,下面我们看看如何将一张图片保存到本地吧:
from bs4 import BeautifulSoup
import requests
target = 'http://www.netbian.com/desk/22801.htm'
# 首先我们找到图片的网页
# 但是这个并不是我们要下载的内容,因为我们要下载的图片格式是jpg或者其他图片格式
# 所以我们需要检查元素找到它实际所在的地址
get_url = requests.get(url=target)
get_url.encoding = 'utf-8' # 编码格式
test = get_url.text
bs = BeautifulSoup(test, 'html.parser')
i = bs.find(name='div', attrs={'class':'pic'}) # 通过find来查找
tar = i.find_next('img').get('src') # 得到图片真正存在的地址
r = requests.get(str(tar)) # 发送请求
with open('image.jpg','wb') as my_file: # 图片下载
my_file.write(r.content) # 这里是content而不是text
print('图片下载完毕!')
我们就可以通过爬虫下载图片了
下载图片展示:
我们掌握下载一张图片的方法后,我们就可以通过构造地址的方法,批量下载图片了(大多数图片网站的图片地址是有规律的)
关于bs的如何快速查找到我们想要的信息的技巧,有机会再细说吧
当然我们还可以通过lxml来更快的定位图片的信息
码字不易,点赞收藏下哦