一、使用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. Redis 4.0.2分布式锁的Java实现

    简介 Redis分布式锁算法有两种,一种是单个Redis实例下的,一种是多个Redis实例的Redlock算法. 官方推荐Redlock算法,但是这个算法需要比较多的Redis实例而且是完全互相独立, ...

  2. Apache shiro权限基本使用

    l shiro框架的核心功能:认证.授权.会话管理.加密 Application Code:应用程序代码,由开发人员负责开发的 Subject:框架提供的接口,代表当前用户对象 SecurityMan ...

  3. Python-local variable 'raw_password' referenced before assignment

    where? 执行Python程序的时候,报这个错 why? 变量作用域问题,在分支中定义的变量,当满足条件的时候则可以正确得到变量,当不满足条件的时候则报这个错 way? 把变量从分支中抽离到分支上 ...

  4. Jetson AGX Xavier/Ubuntu安装QT

    安装QT命令 sudo apt-get install qt5-default qtcreator -y 如果出现错误:unknow module webenginewidgets serialpor ...

  5. 009 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 03 什么是变量?

    009 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 03 什么是变量? 什么是变量? 形象化的生活中的例子理解什么是变量以及变量的三个元素 我们可以根据客人要求 ...

  6. 更改MySQL 5.7的数据库的存储位置

    操作系统:Windows 10 x64 MySQL安装包版本:mysql-installer-community-5.7.17.0 参考:MySQL 5.7版本的安装使用详细教程+更改数据库data的 ...

  7. 【学习笔记】Dirichlet前缀和

    题目戳我 \(\text{Solution:}\) 观察到一个\(a_i\)若对\(a_j\)有贡献,则必须\(i\)的所有质因子幂次小于等于\(j\)的质因子幂次. 于是,我们可以枚举质数的倍数并累 ...

  8. JVM 第四篇:可视化 JVM 故障处理工具

    本文内容过于硬核,建议有 Java 相关经验人士阅读. 1. 可视化工具 在 JDK 中为我们提供了大量的 JVM 故障处理工具,都在 JDK 的 bin 目录下: 这其中除了大量的命令行工具以外,还 ...

  9. Springboot集成JUnit5优雅进行单元测试

    为什么使用JUnit5 JUnit4被广泛使用,但是许多场景下使用起来语法较为繁琐,JUnit5中支持lambda表达式,语法简单且代码不冗余. JUnit5易扩展,包容性强,可以接入其他的测试引擎. ...

  10. 实验二 C2C实践

    实验二  C2C实践 [实验目的] 掌握网上购物的基本流程和C2C平台的运营 [实验条件] ⑴.个人计算机一台 ⑵.计算机通过局域网形式接入互联网. (3).奥派电子商务应用软件 [知识准备] 本实验 ...