一、使用matplotlib画图

关注公众号“轻松学编程”了解更多。

使用matplotlib画柱形图

import matplotlib
from matplotlib import pyplot as plt #数据视图 #配置字体
matplotlib.rcParams["font.sans-serif"] = ["simhei"] # 黑体
matplotlib.rcParams["font.family"] = "sans-serif" # 画曲线
# 颜色是单词首字母,'r'表示红色
# plt.plot([1,2,4],[2,3,4],'--',color='r')
# plt.xlabel('x')
# plt.ylabel('y轴')
# plt.show() # 画柱状图
# left, x轴
# height, y轴
# width=0.8, 柱状图大小
plt.bar([1],[2],color='b',label='php',tick_label="php")
plt.bar([2],[23],label='java')
plt.bar([3,4,5],[131,45,123])
plt.title('全国岗位图')
plt.legend()#绘图
plt.show()
# 保存图片,执行下面的语句时,要把plt.show()注释
# plt.savefig('岗位.png')

二、使用jieba分词

导入第三方库:pip install jieba

# 分词
import jieba
str1 = "不一定是骂人!最近大红的综艺节目奔跑吧兄弟里的一句流行语!"
# 分出来的词不包含标点符号
myCut = jieba.cut(str1,cut_all=True)
# <class 'generator'>生成器
print(type(myCut))
print('cut','/'.join(myCut)) # 搜索引擎切割方式,带上标点符号
serchCut = jieba.cut_for_search(str1)
print('serchCut','/'.join(serchCut))
输出:
cut 不一/一定/是/骂人///最近/大红/的/综艺/综艺节目/节目/奔跑/吧/兄弟/里/的/一句/流行/流行语//
serchCut 不/一定/是/骂人/!/最近/大红/的/综艺/节目/综艺节目/奔跑/吧/兄弟/里/的/一句/流行/流行语/!

三、绘制词云

导入第三方模块wordcloud,下载文件wordcloud-1.4.1-cp36-cp36m-win_amd64.whl到项目根目录下,然后pip安装。地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/

pip install wordcloud-1.4.1-cp36-cp36m-win_amd64.whl
# 词云模块
import jieba
from wordcloud import WordCloud,STOPWORDS
# 数据视图模块
from matplotlib import pyplot as plt # 科学计算模块
import numpy as np
# 图片处理
from PIL import Image # 打开文件
pythoninfo = open('./pythonworkinfo.txt','r',encoding='utf-8',errors='ignore')
pythoninfo = pythoninfo.read() # 分词
pythoninfoCut = jieba.cut(pythoninfo,cut_all=True)
# 把生成器join成字符串
pythoninfo = ' '.join(pythoninfoCut)
# print(pythoninfo) #提取背景色,格式化成数组[] RGB
bgcolor = np.array(Image.open('./bg.jpg'))
# print(bgcolor)
myWordCloud = WordCloud(font_path='simkai.ttf', # 中文字体库
width=400, height=200, # 宽,高
mask=bgcolor, # 字体颜色
scale=1, # 缩放
max_words=200, # 最大字数
min_font_size=4, # 最小字体大小
stopwords=STOPWORDS, # 终止词
random_state=90, # 随机状态,单位°
background_color='white', # 背景颜色
max_font_size=200, # 最大字体大小
).generate(pythoninfo) # 生成词云 # 绘制词云,带坐标
# plt.imshow(myWordCloud)
# plt.show() # 绘制词云,不带坐标 plt.figimage(myWordCloud)
# plt.show() # 保存
plt.savefig('python岗位.png')

四、Python+Selenium+PhantomJS 获取源码

1、简介

Selenium自动化测试工具,支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试。即Selenium支持这些浏览器驱动。Selenium支持多种语言开发,比如Python, Java,C,Ruby等。

PhantomJS是一个无界面浏览器,用来渲染解析JS

安装 Python 的 Selenium 库,再安装好 PhantomJS,就可以实现 Python+Selenium+PhantomJS 的无缝对接!PhantomJS 用来渲染解析JS,Selenium 用来驱动以及与 Python 的对接,Python 进行后期的处理!

直接用用一个没界面的 PhantomJS 是因为效率高!

本文参考内容来自

Selenium官网 SeleniumPython文档

2、安装Selenium
2.1 安装Webdriver启动

谷歌浏览器打开http://chromedriver.storage.googleapis.com/index.html

在谷歌浏览器中找到当前版本号,在连接中中找到适合的驱动下载。

(64版本以上的一般选择2.40)

######2.2 安装Selenium 库

pip install selenium
2.3 测试驱动是否可用
from selenium import webdriver

# executable_path 驱动路径
driver = webdriver.Chrome(executable_path=r"D:\ruanjian\Anaconda\chromedriver.exe")
#打开网页
driver.get("http://www.baidu.com")
#html源码
html = driver.page_source
print(html)

如果有输出,且能打开谷歌浏览器,那么驱动是正常的,否则有可能是驱动版本不对。

#####3、查找元素、点击、下拉条

from selenium import webdriver

# executable_path 驱动路径
driver = webdriver.Chrome(executable_path=r"D:\ruanjian\Anaconda\chromedriver.exe")
#打开网页
driver.get("https://tieba.baidu.com/")
#html源码
html = driver.page_source
# 查找元素 通过name属性查找元素
# driver.find_element(by='name')
kw = driver.find_element_by_name('kw1')
print(kw) # 清空
kw.clear()
# 在搜索框输入
kw.send_keys("世界杯")
# 点击
driver.find_element_by_xpath('//*[@id="tb_header_search_form"]/span[1]/a').click() # 访问微博
driver.get('https://weibo.com/')
# 模拟下拉条
while True:
for _ in range(2):
driver.execute_script('window.scrollBy(0, 1000)')
time.sleep(3) driver.execute_script('window.scrollBy(0, document.documentElement.scrollHeight)')
break print(driver.page_source) # driver.close() # 关闭父类
driver.quit() # 释放内存,全部关闭

#####4、 登录,获取cookie

import time
from selenium import webdriver
import requests driver = webdriver.Chrome()
# 打开知乎
driver.get('https://www.zhihu.com/')
# 按F12查找“登录”按钮,右键copy,选择copy xpath
# 模拟点击
driver.find_element_by_xpath('//*[@id="root"]/div/main/div/div[2]/div/div/div/div[1]/div/div[1]/div[2]/button[1]').click() time.sleep(2)
# 自动输入账号和密码
username = driver.find_element_by_name('username')
password = driver.find_element_by_name('password') username.send_keys('账号')
password.send_keys('密码') time.sleep(5)
# 模拟点击登录操作
driver.find_element_by_xpath('/html/body/div[5]/div/span/div/div[2]/div/div/div/div[2]/div[1]/form/button').click() time.sleep(2)
# 获取cookie
cookies = driver.get_cookies()
print('=========================',cookies,'=========================')
# 关闭
driver.quit()
# 通过session保存cookie
session = requests.session()
for cookie in cookies:
# 使用登录后的cookie
session.cookies.set(cookie['name'], cookie['value']) # 使用get
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"} response = session.get("https://www.zhihu.com/people/zuo-zai-fen-tou-diao-xi-gui-82/activities", headers=headers) print(response.text)

#####5、 使用headless无界面获取源码

from  selenium import webdriver
from selenium.webdriver.chrome.options import Options # driver = webdriver.PhantomJS() # 已经停止研发,不建议这样用 chrome_options = Options()
# 使用代理
chrome_options.add_argument('--proxy-server=http://10.3.137.173:808') # 使用headless,获取源码时不显示浏览器界面
chrome_options.add_argument('--headless')
# chrome_options.add_argument('--disable-gpu') # 禁用gpu
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("http://www.baidu.com/")
# driver.get('https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_7670467959535191418%22%7D&n_type=0&p_from=1')
print(driver.page_source)
driver.quit()

####五、获取斗鱼图片

流程:a.设置请求头 b.获取响应 c.创建xml树形结构对象 d.通过xpath匹配图片

e.获取图片列表 f.循环列表,获取图片信息,保存图片

#多线程获取斗鱼图片
import time
import urllib.request
import lxml
from lxml import etree
import requests
# 线程池
from concurrent.futures import ThreadPoolExecutor # 设置请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/67.0.3396.99 Safari/537.36'} def getImg():
'''
获取图片信息
:return: dict {"图片标题":"图片链接"}
'''
# 获取响应
url ="https://www.douyu.com/directory/game/yz"
response = requests.get(url,headers=headers).text
print(response)
# 创建xml树形结构对象
mytree = lxml.etree.HTML(response)
# 通过xpath匹配图片 获取图片列表
mzList =mytree.xpath('//ul[@id="live-list-contentbox"]/li')
imgDict = {}
for mz in mzList:
mzImgurl = mz.xpath('.//img/@data-original')[0]
alt = mz.xpath('.//img/@alt')[0][:-3]
imgDict[alt] = mzImgurl
return imgDict
# print(mzImgurl,alt) def downloadImg(imgUrl,alt):
'''
下载保存图片
:param imgUrl: 图片链接
:param alt: 图片标题
:return:
'''
# 获取图片保存图片 方式1:
# imgResponse = requests.get(imgUrl,headers=headers).content
# print(imgResponse)
#
# with open('./imgs/'+alt+'.jpg','wb') as f:
# f.write(imgResponse)
# f.flush() # 保存图片 方式2:
urllib.request.urlretrieve(imgUrl,'./imgs/'+alt+'.jpg') if __name__ == '__main__':
imgDict = getImg()
time.clock()
with ThreadPoolExecutor(5)as exet:
for alt,imgUrl in imgDict.items():
exet.submit(downloadImg,imgUrl,alt) print(time.clock())

六、获取音频

获取喜马拉雅中的评书《牧羊少年的奇幻之旅》音频:

import math
import time import requests
import urllib.request
from concurrent.futures import ThreadPoolExecutor headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"} def getPageNum(url):
'''
获取页面数量
:return:
'''
response = requests.get(url, headers=headers) data = response.json() # 总数
totalNum = data['data']['trackTotalCount']
print(totalNum)
pageNum = math.ceil(int(totalNum) / 30)
return pageNum def getAudio(pageNum):
'''
获取音频
:return: dict {'trackName':'audioSrc'}
'''
audioDict = {}
for i in range(1,pageNum+1):
#设置url
url = "https://www.ximalaya.com/revision/play/album?albumId=5721805&pageNum=%d&sort=-1&pageSize=30" %i
response = requests.get(url,headers=headers)
audios = response.json()
# print(audios)
audioList = audios['data']['tracksAudioPlay'] for audio in audioList:
# 回合
trackName = audio['trackName']
# src
audioSrc = audio['src']
# print(trackName, audioSrc)
audioDict[trackName] = audioSrc
return audioDict def downloadAudio(trackName,audioSrc):
urllib.request.urlretrieve(audioSrc, './audios/' + trackName + ".m4a") if __name__ == '__main__':
url = "https://www.ximalaya.com/revision/album/getTracksList?albumId=5721805&pageNum=1"
pageNum = getPageNum(url)
print('一共要下载%d页数据'%pageNum)
# 保存
audioDict = getAudio(pageNum)
# print(audioDict)
time.clock()
with ThreadPoolExecutor(5) as exet:
for trackName,audioSrc in audioDict.items():
exet.submit(downloadAudio,trackName,audioSrc)
print(time.clock())

####七、获取视频

#导入第三方库
pip install you-get
#打开命令终端,输入
you-get 视频url

####八、调用百度AI接口实现文字识别

在百度AI上创建文字识别应用:https://login.bce.baidu.com/?account=&redirect=http

from aip import AipOcr

""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key' client = AipOcr(APP_ID, API_KEY, SECRET_KEY) """ 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
#图片
image = get_file_content('1.png') """ 调用通用文字识别, 图片参数为本地图片 """
""" 调用通用文字识别(高精度版) """
ret = client.basicAccurate(image)
# print(ret)
for r in ret['words_result']:
print(r["words"])

图片:


输出:

登高
【作者】杜甫
【朝代】唐
风急天高猿啸哀,渚清沙白鸟飞回。
无边落木萧萧下,不尽长江滚滚来。
万里悲秋常作客,百年多病独登台。
艰难苦恨繁霜鬓,潦倒新停浊酒杯。

####九、调用百度AI接口实现人脸识别

import urllib.request

import base64
import urllib.request
import urllib.parse # client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【你的 Api Key】&client_secret=【你的 Secret Key】' request = urllib.request.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
# 获取token
response = urllib.request.urlopen(request)
content = response.read()
# 把content转化成字典
at = eval(content) '''
人脸探测
''' request_url = "https://aip.baidubce.com/rest/2.0/face/v1/detect" # 二进制方式打开图片文件
f = open('dd.jpg', 'rb')
img = base64.b64encode(f.read()) params = {"face_fields":"age,beauty,expression,faceshape,gender,glasses,landmark,race,qualities","image":img,"max_face_num":5}
params = urllib.parse.urlencode(params).encode('utf-8') access_token = at["access_token"]
request_url = request_url + "?access_token=" + access_token
request = urllib.request.Request(url=request_url, data=params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib.request.urlopen(request)
content = response.read()
if content:
print(content)

后记

【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。

也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!

公众号

关注我,我们一起成长~~

python使用matplotlib画图,jieba分词、词云、selenuium、图片、音频、视频、文字识别、人脸识别的更多相关文章

  1. python预课05 爬虫初步学习+jieba分词+词云库+哔哩哔哩弹幕爬取示例(数据分析pandas)

    结巴分词 import jieba """ pip install jieba 1.精确模式 2.全模式 3.搜索引擎模式 """ txt ...

  2. python使用matplotlib画图

    python使用matplotlib画图 matplotlib库是python最著名的画图库.它提供了一整套和matlab类似的命令API.十分适合交互式地进行制图. 先介绍了怎样使用matplotl ...

  3. iOS - 选取相册中iCloud云上图片和视频的处理

    关于iOS选取相册中iCloud云上图片和视频  推荐看:TZImagePickerController的源码,这个是一个非常靠谱的相册选择图片视频的库 .当然也可以自己写 如下遇到的问题 工作原因, ...

  4. python实现使用词云展示图片

    记录瞬间 首先,要安装一些第三方包 pip install scipyCollecting scipy Downloading https://files.pythonhosted.org/packa ...

  5. wordcloud + jieba 生成词云

    利用jieba库和wordcloud生成中文词云. jieba库:中文分词第三方库 分词原理: 利用中文词库,确定汉字之间的关联概率,关联概率大的生成词组 三种分词模式: 1.精确模式:把文本精确的切 ...

  6. python学习笔记(11)--词云

    中分词库  jieba 词云 wordcloud import jieba import wordcloud f = open("新时代中国特色社会主义.txt", "r ...

  7. 阿里云OCR图片转换成文字识别调用

    using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Drawing; using S ...

  8. Python自然语言处理学习——jieba分词

    jieba——“结巴”中文分词是sunjunyi开发的一款Python中文分词组件,可以在Github上查看jieba项目. 要使用jieba中文分词,首先需要安装jieba中文分词,作者给出了如下的 ...

  9. pylab.show()没有显示图形图像(python的matplotlib画图包)

    no display name and no $DISPLAY environment variable ============================ @Neil's answer is ...

随机推荐

  1. 内存操作【memset】【memcpy】

    void *memset(void *s, int c, unsigned long n); 将指针变量 s 所指向的前 n 字节的内存单元用一个"整数" c 替换,注意 c 是 ...

  2. Nuget管理自己的项目库

    Nuget是什么 Nuget 是一种 Visual Studio 扩展工具,它能够简化在 Visual Studio 项目中添加.更新和删除库(部署为程序包)的操作.(官方地址)相信大家对这个应该还是 ...

  3. 【小白学PyTorch】19 TF2模型的存储与载入

    [新闻]:机器学习炼丹术的粉丝的人工智能交流群已经建立,目前有目标检测.医学图像.时间序列等多个目标为技术学习的分群和水群唠嗑的总群,欢迎大家加炼丹兄为好友,加入炼丹协会.微信:cyx64501661 ...

  4. P4821 [中山市选]生成树

    题目链接 我们可以看一下题目中给的这张图. 首先,树是没有环的,所以我们要把所有的环上的边都删去一条. 我们可以现在每个五边形上删去一条边. 但删完之后我们会发现,里面还有一圈. 这时候,我们就要在这 ...

  5. spring-boot-route(十)多数据源切换

    前面我们已经介绍了三种方式来操作数据库,在实际开发中,往往会出现一个服务连接多个数据库的需求,这时候就需要在项目中进行灵活切换数据源来完成多个数据库操作.这一章中,我们使用jdbcTemplate来学 ...

  6. java swing 按钮事件触发两次或者多次

    按钮事件触发多次? 如果是JButton,八成是由于粗心,多次添加了监听事件 保持只添加一个监听事件就解决了~

  7. shell-字符串及整数操作符讲解与多实践

    1. 字符串测试操作符 字符串测试操作符的作用:比较两个字符串是否相同.字符串长度是否为零,字符串是否为null(注:bash区分零长度字符串和空字符串)等. "="比较两个字符串 ...

  8. mapbox处理中文标注不能换行问题

    mapbox的换行侧率是根据空格进行的,因为中文中没有设置空格,因此换行不起作用. 解决方法:在node_modules\ol-mapbox-style\util.js  60行添加下列代码: let ...

  9. 使用Python对植物大战僵尸学习研究

    根据上一篇 使用Python读写游戏1 中,使用Python win32库,对一款游戏进行了读内存 操作. 今天来写一下对内存进行写的操作 正文 要进行32位的读写,首先了解一下要用到的几个函数,通过 ...

  10. spring boot:spring security实现oauth2授权认证(spring boot 2.3.3)

    一,oauth2的用途? 1,什么是oauth2? OAuth2 是一个开放标准, 它允许用户让第三方应用访问该用户在某一网站上存储的私密资源(如头像.照片.视频等), 在这个过程中无须将用户名和密码 ...