Python基础知识总结笔记(七)常用第三方库
- argparse:命令行参数解析库
- pillow:图片处理库
- requests:处理web请求库
1. argparse:命令行参数解析库
- 将下面代码保存1.py
- 终端输入 :(即可看到传进来参数)
python test.py -c Config --spider XSpider -t 10
import argparse#库#命令行参数
def parse_args():
#1.创建ArgumentParser()对象
parser = argparse.ArgumentParser()#自动传入系统当前参数
#2.调用add_argument()方法添加参数。
parser.add_argument('-c', #-c指向config文件(缩写)
'--config', #--config指向config文件(全称)
default='ds_config') # Assign config file, don't use '.py' suffix.
parser.add_argument('-s',
'--spider',
help='',
default='spider_sample') # Assign spider file, don't use '.py' suffix.
parser.add_argument('-t',
'--thread_count',
help='',
default=0, #设定默认值
type=int)#设定类型,自动类型转换
#3.调用parse_args()解析添加的参数。
return parser.parse_args()
if __name__ == '__main__':
args = parse_args()
print(args.config)#属性
print(args.spider)
print(args.thread_count)
2. pillow:图片处理库
# pillow图片处理
from PIL import Image, ImageFilter
#打印字、模糊效果、字旋转。验证码原理
im = Image.open('girl.jpg')
w, h = im.size
print('with = %d, height = %d' % (w, h))
im.thumbnail((w // 2, h // 2))#缩小
im.save('girl_thumb.jpg')#生成缩略图
im = Image.open('girl.jpg')
im2 = im.filter(ImageFilter.BLUR)#
im2.save('girl_blur.jpg', 'jpeg')#生成模糊化图
3. requests:处理web请求库
# requests处理web请求
import requests
url = 'http://www.baidu.com'
r = requests.get(url)#打开网页
# print(r.text)#返回内容
print(r.status_code)#状态200:成功,404:未找到,400:没有权限,503/500:服务器出现问题
print(r.encoding)#页面编码形式
text = r.text.encode('ISO-8859-1').decode('utf-8') # 中文乱码——页面声明的编码与实际编码不符
#encode()用'ISO-8859-1'编码方式还原成字节(二进制),decode()用utf-8进行编码
print(text)
r = requests.get('https://github.com/timeline.json')#请求返回json格式字符串
print(r.text)
# print(r.json()) #通过json转化成字典形式。无需在用文件进行处理
j_data = r.json()
print(j_data['documentation_url'])
r = requests.get('http://i-2.shouji56.com/2015/2/11/23dab5c5-336d-4686-9713-ec44d21958e3.jpg', stream = True)
#处理二进制图片--用stream方式边读边打开
with open('meinv2.jpg', 'wb+') as f:
for chunk in r.iter_content(1024):
f.write(chunk)
# 利用requests实现豆瓣模拟登陆
from bs4 import BeautifulSoup# bs4:页面元素定位和解析
ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'#模仿某平台浏览器
headers ={'user-agent':ua}#http请求头
url_login = 'https://accounts.douban.com/login'#豆瓣登陆入口url,登陆请求通过此url发送
session = requests.Session()
formdata = {'redir':'https://www.douban.com',#登陆时提供的表单
'form_email':'账户',
'form_password':'密码'}
resp = session.post(url_login,#发送请求
data=formdata,
headers=headers)
bs = BeautifulSoup(resp.text, 'html5lib')#构造BeautifulSoup解析器
captcha = bs.select('img#captcha_image')#bs查看是否有验证码。
if captcha:
captcha = captcha[0]
# 处理验证码
print(captcha.text)
img_url = captcha.get('src').strip()
print(img_url)#打印验证码图片链接
id_ = img_url.split('?')[1].split('&')[0].split('=')[1]#
text = input('请输入验证码')
formdata['captcha-solution'] = text
formdata['captcha-id'] = id_
resp = session.post(url_login,
data=formdata,
headers=headers)
with open('douban.txt', 'w+', encoding='utf-8') as f:
f.write(resp.text)