手把手教你进行Mysql5.x版本的安装及解决安装过程中的bug

前言

Hey,大家好,我是码农星期八,似乎还没有更新过关于Mysql的相关文章,同时也是因为工作需要,一起来学学叭。

数据库种类

常见的数据库有Mysql,Oracle,SQLite,Access,MS SQL Server。

这时候可能有人一看,what?数据库这么多,我要全部都学吗???,学这么多需要多久,是不是又是几个月。。。

我的回答是,只要学好Mysql,学会其他都是分分钟的事,数据库很多东西都是相似的,基本可以照搬使用。

需要说明的是,我们学习的是SQL语法,Mysql,Oracle只是软件,SQL语法可以让我们和这些软件进行交流,实现各种功能。

本次系列就以常用的Mysql进行讲解。

安装

下载

地址
:https://dev.mysql.com/downloads/mysql/

注意的是,这个地址是最新版本的下载地址。

但是通常情况下,我们可能选择老版本的可能性会比较大,毕竟兼容性更强,BUG更少。

历史版本下载地址

地址
:https://downloads.mysql.com/archives/community/

本教程以Mysql 5.7.27版本,win7 32位系统操作,下载的是ZIP Archive版本

各位下载就好了,这里就不做举例了!!!

下载好,解压

下载好之后,放一个有意义的目录,并且进行解压。

我一般会将软件放在其D:/programeFile文件夹下,所以这次还放到这。

初始化

如果上述都完成之后,需要进行初始化,需要cmd进到刚才的mysql-5.7.27-winx64\bin目录下。

执行命令

mysqld.exe --initialize-insecure

执行结果

如果初始化时出现…MSVCP120.dll…错误

如果出现这个错误,在这里只需要安装Visual C++ Redistributable Packages for Visual Studio 2013就行。

安装包vcredistx86x64.zip

下一步下一步就好了, 安装好之后再执行mysqld.exe –initialize-insecure即可。

将Mysql制作成服务

这里要说明一下,mysqld.exe是服务端,运行mysqld.exe,相当于Mysql服务端跑起来了客户机才能远程连接,进行各种操作。

还有一个是mysql.exe,这个是客户端,用这个来连接跑起来的mysqld.exe服务。

如上所说,我们只需要将mysqld.exe跑起来,其实就可以对外提供服务了

但是只一个黑洞洞的窗口,不是太好看,如果我们将它制作成服务,就静默在后台运行了。

还是切换到<数据库安装目录>/bin目录下。

执行命令

mysqld.exe --install

执行成功效果

如果提示Install/Remove of the Service Denied!

如果提示这个,说明权限不够,使用管理员方式打开cmd,切换到数据库安装目录,再执行上述命令即可。

服务已经安装成功

启动/关闭 Mysql服务

上述都完成之后,我们还需要两条命令。

# 启动MySQL服务
net start mysql
# 关闭MySQL服务
net stop mysql

连接Mysql服务

如果上述都完成,那你的Mysql服务必定启动

我们来尝试一下连接服务器。

上述我们说到,mysqld.exe才是服务端,并且我们也将mysqld.exe制作成了服务静默跑在后台。

mysql.exe才是客户端,需要连接服务端(做成服务的mysqld.exe)

还是在<数据库安装目录>/bin下

执行命令

mysql.exe -u root -p

如果如图所示,就表示成功连接Mysql服务端。

总结

本次文章主要讲述如何进行安装Mysql,并且使用的版本是5.x的版本。

不是最新的版本,就是为了防止一些不可预估的情况。

并且我们将Mysql制作成了服务,还是永远直接启动的,开机自启的,这就方便了下次连接。

最后我们使用Mysql提供的客户端进行连接测试,发现是没问题的,并且用户名默认root,没有密码。

如果在操作过程中有任何问题,记得下面留言,我们看到会第一时间解决问题。

敬往事一杯酒,自此不再回头。我是码农星期八,如果觉得还不错,记得动手点赞一下哈。感谢你的观看。

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

——————- End ——————-

往期精彩文章推荐:

手把手教你用用Python爬取上道网的赞助公司名称

一、前言

上道网是一个手游发行推荐与投融资交易平台。平台聚集手游CP、手游发行、手游渠道、手游外包,投资商以及IP授权商,IP合作、一站式服务。并为之提供合作交易机会。

今天教如何去爬取上道网的赞助公司名称,方便有关人士投资。

二、实现目标

获取对应的公司名称,保存文档。

三、项目准备

软件:PyCharm

需要的库:requests,fake_useragent,time

网址:
http://www.daogame.cn/qudao-p-2.html?s=/qudao-p-{}.html

四、项目分析

如何网页访问?

http://www.daogame.cn/qudao-p-2.html?s=/qudao-p-1.html

http://www.daogame.cn/qudao-p-2.html?s=/qudao-p-2.html

http://www.daogame.cn/qudao-p-2.html?s=/qudao-p-3.html

http://www.daogame.cn/qudao-p-2.html?s=/qudao-p-4.html

点击下一页时,每增加一页p-{}.html自增加1,用{}代替变换的变量,再用for循环遍历这网址,实现多个网址请求。

五、项目实现

1. 定义一个class类继承object,定义init方法继承self,主函数main继承self。导入需要的库、请求地址。

import requests
from lxml import etree
from fake_useragent import UserAgent
import time


class Shangdao(object):
    def __init__(self):
        self.url = "http://www.daogame.cn/qudao-p-2.html?s=/qudao-p-{}.html"  #网站
    def main(self):
        pass


if __name__ == '__main__':
    Siper = Shangdao()
    Siper.main()

2. 随机产生UserAgent,防止反爬。

for i in range(1, 50):
            self.headers = {
                'User-Agent': ua.random,
            }

3. 发送请求 获取响应, 页面回调,方便下次请求。

   def get_page(self, url):
        res = requests.get(url=url, headers=self.headers)
        html = res.content.decode("utf-8")
        return html

4. 获取公司名称,for遍历。

   def page_page(self, html):
        parse_html = etree.HTML(html)
        one = parse_html.xpath('//h2/a/text()')
        for i in one:
            print(i)

5. 写入文档。

           f = open('公司.doc', 'a', encoding='utf-8')  # 以'w'方式打开文件
            f.write(str(i))

6. 调用方法,实现功能。

   def main(self):
        stat = int(input("输 入 开 始 (2开始):"))
        end = int(input("输 入 结 束:"))
        for page in range(stat, end + 1):
            url = self.url.format(page)
            print(url)
            html = self.get_page(url)
            self.page_page(html)
            print("==================第%s页爬取成功!!!!=====================" % page)

项目优化:

1. 设置时间延时。

time.sleep(1.4)

六、效果展示

点击绿色小三角运行输入起始页,终止页( 从0页开始 )。

渠道公司名,结果显示控制台。

保存文档。

七、总结

  1. 不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。

  1. 希望通过这个项目,能够帮助了解xpath解析页面的基本流程,字符串是如何拼接,format函数如何运用。

  2. 本文基于Python网络爬虫,利用爬虫库,实现爬取上道网,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。

    看完本文有收获?请转发分享给更多的人

    IT共享之家

    入群请在微信后台回复【入群】

    ——————- End ——————-

    往期精彩文章推荐:

Python解析库lxml与xpath用法总结

本文主要围绕以xpath和lxml库进行展开:

一、xpath 概念、xpath节点、xpath语法、xpath轴、xpath运算符

二、lxml的安装、lxml的使用、lxml案例

一、xpath

1.xpath概念

XPath 是一门在 XML 文档中查找信息的语言。XPath 使用路径表达式在 XML 文档中进行导航 。XPath 包含一个标准函数库 。XPath 是 XSLT 中的主要元素 。XPath 是一个 W3C 标准 。

2.xpath节点

xpath有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。

节点关系:父、子、兄弟、先辈、后辈。

3.xpath语法

xpath语法在W3c网站上有详细的介绍,这里截取部分知识,供大家学习。

XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。下面列出了最有用的路径表达式:

表达式 描述
nodename 选取此节点的所有子节点。
/ 从根节点选取。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选取属性。

在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:

路径表达式 结果
bookstore 选取 bookstore 元素的所有子节点。
/bookstore 选取根元素 bookstore。注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!
bookstore/book 选取属于 bookstore 的子元素的所有 book 元素。
//book 选取所有 book 子元素,而不管它们在文档中的位置。
bookstore//book 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。
//@lang 选取名为 lang 的所有属性。

谓语(Predicates)

谓语用来查找某个特定的节点或者包含某个指定的值的节点。

谓语被嵌在方括号中。

在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:

路径表达式 结果
/bookstore/book[1] 选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book[last()] 选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1] 选取属于 bookstore 子元素的倒数第二个 book 元素。
/bookstore/book[position()<3] 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。
//title[@lang] 选取所有拥有名为 lang 的属性的 title 元素。
//title[@lang=’eng’] 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。
/bookstore/book[price>35.00] 选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。
/bookstore/book[price>35.00]/title 选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。

选取未知节点

XPath 通配符可用来选取未知的 XML 元素。

通配符 描述
* 匹配任何元素节点。
@* 匹配任何属性节点。
node() 匹配任何类型的节点。

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

路径表达式 结果
/bookstore/* 选取 bookstore 元素的所有子元素。
//* 选取文档中的所有元素。
//title[@*] 选取所有带有属性的 title 元素。

选取若干路径

通过在路径表达式中使用”|”运算符,您可以选取若干个路径。

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

路径表达式 结果
//book/title | //book/price 选取 book 元素的所有 title 和 price 元素。
//title | //price 选取文档中的所有 title 和 price 元素。
/bookstore/book/title | //price 选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素。

4.xpath 轴

轴可定义相对于当前节点的节点集。

轴名称 结果
ancestor 选取当前节点的所有先辈(父、祖父等)。
ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身。
attribute 选取当前节点的所有属性。
child 选取当前节点的所有子元素。
descendant 选取当前节点的所有后代元素(子、孙等)。
descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
following 选取文档中当前节点的结束标签之后的所有节点。
namespace 选取当前节点的所有命名空间节点。
parent 选取当前节点的父节点。
preceding 选取文档中当前节点的开始标签之前的所有节点。
preceding-sibling 选取当前节点之前的所有同级节点。
self 选取当前节点。

5.xpath运算符

下面列出了可用在 XPath 表达式中的运算符:

运算符 描述 实例 返回值
| 计算两个节点集 //book | //cd 返回所有拥有 book 和 cd 元素的节点集
+ 加法 6 + 4 10
减法 6 – 4 2
* 乘法 6 * 4 24
div 除法 8 div 4 2
= 等于 price=9.80 如果 price 是 9.80,则返回 true。如果 price 是 9.90,则返回 false。
!= 不等于 price!=9.80 如果 price 是 9.90,则返回 true。如果 price 是 9.80,则返回 false。
< 小于 price<9.80 如果 price 是 9.00,则返回 true。如果 price 是 9.90,则返回 false。
<= 小于或等于 price<=9.80 如果 price 是 9.00,则返回 true。如果 price 是 9.90,则返回 false。
> 大于 price>9.80 如果 price 是 9.90,则返回 true。如果 price 是 9.80,则返回 false。
>= 大于或等于 price>=9.80 如果 price 是 9.90,则返回 true。如果 price 是 9.70,则返回 false。
or price=9.80 or price=9.70 如果 price 是 9.80,则返回 true。如果 price 是 9.50,则返回 false。
and price>9.00 and price<9.90 如果 price 是 9.80,则返回 true。如果 price 是 8.50,则返回 false。
mod 计算除法的余数 5 mod 2 1

好了,xpath的内容就这么多了。接下来我们要介绍一个神器lxml,他的速度很快,曾经一直是我使用beautifulsoup时最钟爱的解析器,没有之一,因为他的速度的确比其他的html.parser 和html5lib快了许多。

二、lxml

1.lxml安装

lxml 是一个xpath格式解析模块,安装很方便,直接pip install lxml 或者easy_install lxml即可。

2.lxml 使用

lxml提供了两种解析网页的方式,一种是你解析自己写的离线网页时,另一种 则是解析线上网页。

导入包:

from lxml import  etree

1.解析离线网页:

html=etree.parse('xx.html',etree.HTMLParser())
aa=html.xpath('//*[@id="s_xmancard_news"]/div/div[2]/div/div[1]/h2/a[1]/@href')
print(aa)

2.解析在线网页:

from lxml import etree
import requests
rep=requests.get('https://www.baidu.com')
html=etree.HTML(rep.text)
aa=html.xpath('//*[@id="s_xmancard_news"]/div/div[2]/div/div[1]/h2/a[1]/@href')
print(aa)

那么我们怎么获取这些标签和标签对应的属性值了,很简单,首先获取标签只需你这样做:


然后我们可以,比方说,你要获取a标签内的文本和它的属性href所对应的值,有两种方法,

1.表达式内获取

aa=html.xpath('//*[@id="s_xmancard_news"]/div/div[2]/div/div[1]/h2/a[1]/text()')


ab=html.xpath('//*[@id="s_xmancard_news"]/div/div[2]/div/div[1]/h2/a[1]/@href')

2.表达式外获取

aa=html.xpath('//*[@id="s_xmancard_news"]/div/div[2]/div/div[1]/h2/a[1]')


aa.text


aa.attrib.get('href')

这样就完成了获取,怎么样,是不是很简单了,哈哈哈。

下面再来lxml的解析规则:

表达式 描述
nodename 选取此节点的所有子节点
/ 从当前节点选取直接子节点
// 从当前节点选取子孙节点
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性
html = lxml.etree.HTML(text)
#使用text构造一个XPath解析对象,etree模块可以自动修正HTML文本
html = lxml.etree.parse('./ex.html',etree.HTMLParser())
#直接读取文本进行解析
from lxml import etree
result = html.xpath('//*')
#选取所有节点
result = html.xpath('//li')
#获取所有li节点
result = html.xpath('//li/a')
#获取所有li节点的直接a子节点
result = html.xpath('//li//a')
#获取所有li节点的所有a子孙节点
result = html.xpath('//a[@href="link.html"]/../@class')
#获取所有href属性为link.html的a节点的父节点的class属性
result = html.xpath('//li[@class="ni"]')
#获取所有class属性为ni的li节点
result = html.xpath('//li/text()')
#获取所有li节点的文本
result = html.xpath('//li/a/@href')
#获取所有li节点的a节点的href属性
result = html.xpath('//li[contains(@class,"li")]/a/text())
#当li的class属性有多个值时,需用contains函数完成匹配
result = html.xpath('//li[contains(@class,"li") and @name="item"]/a/text()')
#多属性匹配
result = html.xpath('//li[1]/a/text()')
result = html.xpath('//li[last()]/a/text()')
result = html.xpath('//li[position()<3]/a/text()')
result = html.xpath('//li[last()-2]/a/text()')
#按序选择,中括号内为XPath提供的函数
result = html.xpath('//li[1]/ancestor::*')
#获取祖先节点
result = html.xpath('//li[1]/ancestor::div')
result = html.xpath('//li[1]/attribute::*')
#获取属性值
result = html.xpath('//li[1]/child::a[@href="link1.html"]')
#获取直接子节点
result = html.xpath('//li[1]/descendant::span')
#获取所有子孙节点
result = html.xpath('//li[1]/following::*[2]')
#获取当前节点之后的所有节点的第二个
result = html.xpath('//li[1]/following-sibling::*')
#获取后续所有同级节点

3.lxml案例

为了偷懒,小编决定还是采用urllib那篇文章的代码,哈哈哈,机智如我。

好了,今天就讲这么多,大家感兴趣的话可以多多关注哦,精彩不停息!!!!

本文参考文献:

https://www.w3school.com.cn/

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

——————- End ——————-

往期精彩文章推荐:

安装docker时,遇到Loaded plugins…怎么办

前言

Hey,大家好,我是码农,星期八,我们在安装Docker时,通常下面三条命令就能安装成功。

# 下载Docker依赖
yum -y install yun-utils device-mapper-persistent-data lvm2
# 设置一个下载Docker镜像源
yum -y install yum-utils
# 配置下载源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装Docker
yum makecache fast
yum -y install docker-ce

但是通常情况下,我们在执行这条命令时,会报报一个错!!!

yum -y install yum-utils

报错信息

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
No package yum-util available.
Error: Nothing to do

图片

这个该怎么办呢???

解决办法

出现这个错误,通常是第一次安装Docker才会出现。

报错信息翻译过来如下

加载插件:fastestmirror, langpacks
从缓存的主机文件加载镜像速度
没有包yum-util可用。
错误:啥都没做

大概可以了解,应该是加载插件的问题。

步骤

1、禁用fastestmirror插件

编辑fastestmirror.conf文件

vim /etc/yum/pluginconf.d/fastestmirror.conf

将enabled=1改为enabled=0,保存

2、修改yum的配置文件,不使用插件。

编辑yum.conf文件

vim /etc/yum.conf

将plugins=1改为plugins=0

如果还不行

如果通过上述两步,可能是缺少epel

安装epel

yum install epel-release

总结

其实遇到这个问题,说大也不大,但是就是碰到烦人,所以就记录一下。

操作使用的是vim,不会的记得学一下哈。

如果在操作过程中有任何问题,记得下面留言,我们看到会第一时间解决问题。

越努力,越幸运。

我是码农星期八,如果觉得还不错,记得动手点赞一下哈。感谢你的观看。

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

——————- End ——————-

一篇文章教会你使用Python下载抖音无水印视频

今天小编要跟大家分享的是,利用Python如何下载抖音无水印的视频;大家可能要问了,这个有什么用呢?当然有用了。那么有什么用呢?下面小编跟大家详细说说。

众所周知,由于如今短视频的火爆,使得一批又一批的自媒体创作者犹如雨后春笋般冒了出来,其中不乏一些创作者投机取巧想要剽窃他人成功作品,这一行为往往被戏称为白嫖,哈哈哈,废话不多说,撸起袖子就是淦。

一、准备

sublime text 3、360浏览器、Python 3.6运行环境

二、需求分析

首先,我们要弄清楚一件事情,抖音视频的水印是怎么生成上去的,什么时候生成上去的,搞清楚这件事情就能很容易找到原视频的地址,然后就可以直接下载了。

三、操作实践

我们打开手机上的一个抖音视频,然后点击复制链接,把链接复制下来然后到电脑浏览器打开,比如说关于李元霸的这个抖音视频:

多少英雄豪杰被黑,只为神化一个痴呆患者李元霸 https://v.douyin.com/wCgKrh/ 复制此链接,打开【抖音短视频】,直接观看视频!

复制链接在浏览器打开,即可看到这幅画面,如下图:

一篇文章教会你使用Python下载抖音无水印视频

然后我们会发现视频带有抖音字样的水印,很显然这不便于我们白嫖别人的优秀作品,打开审查元素进行查看,如下图:

一篇文章教会你使用Python下载抖音无水印视频

为了程序的美观,我们可以写个GUI界面的:

class page:
    def __init__(self): 
        self.root= tk.Tk()   #初始化窗口
        self.root.title('抖音无水印视频下载v1.0')  #窗口名称
        self.root.geometry("700x700")  #设置窗口大小
        #设置窗口是否可变,宽不可变,高可变,默认为True
        self.root.resizable(width=True,height=True)
        #创建标签,文字,背景颜色,字体(颜色,大小),标签的高和宽
        self.label1 =tk.Label(self.root,text='抖音地址:',font=('宋体',10),width=12,height=2)
        #创建输入框,标签高度,字体大小颜色,内容显示方式
        self.e1 = tk.Entry(self.root,width=30,show=None, font=('Arial', 12))
        self.label2 =tk.Label(self.root,text='文件名:',font=('宋体',10),width=12,height=2)
        #创建输入框,标签高度,字体大小颜色,内容显示方式
        self.e2 = tk.Entry(self.root,width=30,show=None, font=('Arial', 12))
        #创建按钮 内容  宽高  按钮绑定事件
        self.b1 = tk.Button(self.root, text='无水印下载', width=8,height=1,command=self.download)
        self.b2 = tk.Button(self.root, text='清空内容', width=8,height=1,command=self.close)
        self.photo=tk.PhotoImage(file = '111.gif')
        self.im=tk.Label(self.root, image = self.photo)
        self.photo1=tk.PhotoImage(file = '222.gif')
        self.im1=tk.Label(self.root, image = self.photo1)
        self.dashang=tk.Label(self.root,bg='gray',fg='blue',font=('宋体',12),text='感谢各位的支持,觉得小弟写的不错欢迎打赏,以便于我日后分享更多的精彩作品')
        #将所有部件添加到界面中
        self.label1.place(x=140,y=30,anchor='nw')
        self.e1.place(x=210,y=32,anchor='nw')
        self.b2.place(x=500,y=40,anchor='nw')
        self.label2.place(x=144,y=60,anchor='nw')
        self.e2.place(x=210,y=62,anchor='nw')
        self.b1.place(x=230,y=110,anchor='nw')
        self.dashang.place(x=60,y=160)
        self.im.place(x=10,y=200,width=202,height=313,anchor='nw')
        self.im1.place(x=300,y=200,width=202,height=313,anchor='nw')
        self.b3=tk.Button(self.root,text='技术博客,点我直达',command=self.refer)
        self.b3.place(x=200,y=530,width=140,height=40,anchor='nw')
        self.root.mainloop()

效果还不错,可以看看:

一篇文章教会你使用Python下载抖音无水印视频

接下来我们要写的是下载实现代码段,如下:

def download(self):
        url='http://www.zimo.wiki:8080/douyin-video-crawler/api/analysis?url='+self.e1.get()
        try:
            rep=requests.get(url,timeout=5)
            result=rep.text
            res=eval(result)
            if res.get('msg')=='analysis success':
                down_url=res.get('url')
                data=requests.get(down_url,stream=True,timeout=4)
                with open('{}.mp4'.format(self.e2.get()),'wb') as f:
                    f.write(data.content)
            else:
                msg.showwarning('notice','URL Format Error!!!')
        except:
            return

这里我们是用到了一个抖音解析接口:

http://www.zimo.wiki:8080/douyin-video-crawler/api/analysis?url=

只要在它后面加上抖音视频URL,即可解析出无水印视频,是不是很强大?

我们将地址填写进去访问,发现是这样,如图:

一篇文章教会你使用Python下载抖音无水印视频

我们把红线指示的地址复制到地址栏就可以访问到无水印视频啦!

拿到真实地址便可以下载了。

为了让他的功能更加完善,我们再加上关闭和跳转操作,如图:

def close(self):  #关闭
        self.e1.delete(0,'end')
        self.e2.delete(0,'end')
        
 def refer(self): #跳转
        wb.open('https://url.ms/lypks')

最后当然就是启动该程序啦。

page()

得到如下播放画面:

一篇文章教会你使用Python下载抖音无水印视频

可以看到,完全没有水印。

四、总结

本文介绍的技术虽然算不上太高端和前沿,但是挺实用的。感谢大家的多多关注与支持,后期我会出更多实用的代码技巧。

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

——————- End ——————-

往期精彩文章推荐:

一篇文章带你了解css z-index(重叠顺序)

div cssz-index层重叠顺序

div层、span层等html标签层重叠顺序样式z-index,平时CSS使用较少,但也会难免会碰到CSS z-index使用。

从基础语法到应用案例教程讲解学习z-index。

一、z-index语法与结构

z-index 跟具体数字

div{
  z-index:100
}

注意:z-index的数值不跟单位。

z-index的数字越高越靠前,并且值必须为整数和正数(正数的整数)。

二、z-index使用条件

z-index在使用绝对定位 position:absolute属性条件下使用才能使用。通常CSS让不同的对象盒子以不同顺序重叠排列,CSS就是要z-index样式属性。

三、案例

1. z-index重叠顺序案例

为了方便观察,设置3个DIV盒子,分别设置不同css背景颜色,设置相同CSS高度、CSS宽度。分别设置背景颜色)为黑色、红色、蓝色。CSS width为300px,css height为100px。

css代码(没加z-index属性)


<style>
            .div css5 {
                position: relative;
            }

            .div css5-1,
            .div css5-2,
            .div css5-3 {
                width: 300px;
                height: 100px;
                position: absolute;
            }

                .divcss5-1 {

                background: #000;/* 黑色*/
                left: 10px;
                top: 10px
            }

            .divcss5-2 {

                background: #F00;/* 红色*/
                left: 20px;
                top: 20px
            }

            .divcss5-3 {

                background: #00F;/* 蓝色*/
                left: 30px;
                top: 30px
            }
</style>

CSS代码(加上z-index属性后) :

<style>
            .div css5 {
                position: relative;
            }

            .div css5-1,
            .div css5-2,
            .div css5-3 {
                width: 200px;
                height: 100px;
                position: absolute;
            }

            .div css5-1 {
                z-index: 10;
                background: #000;/* 黑色*/
                left: 10px;
                top: 10px
            }

            .div css5-2 {
                z-index: 20;
                background: #F00;/* 红色*/
                left: 20px;
                top: 20px
            }

            .div css5-3 {
                z-index: 15;
              background: #00F;/* 蓝色*/
                left: 30px;
                top: 30px
            }
</style>

html代码

 <div class="divcss5-1"></div>
 <div class="divcss5-2"></div>
 <div class="divcss5-3"></div>

没加的效果:

一篇文章带你了解css z-index(重叠顺序)

加上z-index属性效果:

一篇文章带你了解css z-index(重叠顺序)

2. 案例说明

三个盒子均都使用了绝对定位属性position样式,并且设置相同的高度和宽度样式。为了便于观察CSS使用left、right属性并赋予不同值,让其错落有致。

  • Div css5-1 盒子背景为黑色, z-index:10
  • Div css5-2 盒子背景为红色, z-index:20
  • Divcss5-3盒子背景为蓝色 , z-index:15

为可以看见第一个盒子z-index:10,所以重叠在最下层,而第二个盒子z-index:20,值最大所以最上层重叠,第三个盒子设置z-index:15,居中。

四、总结

本文基于CSS基础,介绍了如何使用z-index重叠顺序样式,在实际DIV+CSS布局时候CSS需要绝对定位样式,并且可以使用left、right进行定位,通过不同z-index值实现层重叠顺序排列。代码很简单,希望能够帮助你学习。

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

——————- End ——————-

往期精彩文章推荐:

用Python编程语言来实现阿姆斯特朗数的检查

一、什么是阿姆斯特朗数?

如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。

一个正整数称为阿姆斯特朗阶数。

例:

abcd... = an + bn + cn + dn + ...

如果是3位的阿姆斯特朗数字,则每个数字的立方和等于该数字本身。
例如:

153 = 1*1*1 + 5*5*5 + 3*3*3  // 153是一个阿姆斯特朗数。

二、案例

1. 检查阿姆斯特朗数(3位数字)

例 :

# 检查该数字是否为阿姆斯壮数字的Python程序

# 接受用户的输入
num = int(input("输入一个数字: "))

# 初始化sum
sum = 0

# 求出每个数字的立方和
temp = num
while temp > 0:
   digit = temp % 10
   sum += digit ** 3
   temp //= 10

# 显示结果
if num == sum:
   print(num,"是阿姆斯特朗数")
else:
   print(num,"不是阿姆斯特朗数")

输出1

输出2

代码解析:

要求用户输入一个数字,然后检查它是否是一个阿姆斯特朗数字,需要计算每个数字的立方和。

因此,将总和初始化为0,并使用模运算符(%)获得每个数字。将数字除以10所得的余数是该数字的最后一位。使用指数运算符获取多维数据集。

最后,将总和与原始数字进行比较,得出结论,如果相等,则是阿姆斯特朗数。

2. 检查是阿姆斯特朗的n位数字

例:

num = 1634

# 将num变量更改为string
# 并计算出长度(位数)
order = len(str(num))

# 初始化 sum
sum = 0

# 求出每个数字的立方和
temp = num
while temp > 0:
    digit = temp % 10
    sum += digit ** order
    temp //= 10

# 显示结果
if num == sum:
    print(num, "是阿姆斯特朗数")
else:
    print(num, "不是阿姆斯特朗数")

运行结果:

注:

读者可以更改源代码中num的值,然后再次运行以对其进行测试。

3. 在整数中查找阿姆斯特朗数

例:

# Python程序在整数中查找阿姆斯特朗数

lower = 100
upper = 2000

for num in range(lower, upper + 1):

    # order 个数
    order = len(str(num))

    # 初始化 sum
    sum = 0

    temp = num
    while temp > 0:
        digit = temp % 10
        sum += digit ** order
        temp //= 10

    if num == sum:
        print(num)

运行结果:

注:

在变量lower中设置了下限100,在变量upper中设置了上限2000。

使用了for循环来从变量lower到upper进行迭代。在迭代中,lower的值增加1,并检查它是否为阿姆斯特朗数。

可以更改范围并通过更改变量lower和upper进行测试。该变量lower应小于upper此程序才能正常运行。

三、总结

本文基于Python基础,介绍了什么是阿姆斯特朗数,以及如何去判断,检查阿姆斯特朗数,检查是阿姆斯特朗的n位数字,在整数中查找阿姆斯特朗数。都通过案例的分析,代码的演示,效果的展示,进行有效的分析。

使用Python语言,能够让读者更好的理解。在实际项目中遇到的问题,难点,提供了有效的解决方案,供读者参考。

代码很简单,希望能够帮读者更好的学习。

想学习更多前端、Python爬虫、大数据等计算机知识,请前往:http://pdcfighting.com/

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

——————- End ——————-

往期精彩文章推荐:

手把手用Python教你如何发现隐藏wifi

手把手教你用Python做个可视化的“剪刀石头布”小游戏

手把手用Python网络爬虫带你爬取全国著名高校附近酒店评论

一篇文章带你了解CSS clear both清除浮动

一、前言

CSS clear both清除产生浮动 ,使用了css float浮动会产生css浮动,这个时候就需要清理清除浮动,就用clear样式属性即可实现。

二、clear语法与结构

1. clear语法

clear : none | left|right| both

2. clear参数值说明

属性描述none允许两边都可以有浮动对象bot不允许有浮动对象left不允许左边有浮动对象right不允许右边有浮动对象

3. clear解释

该属性的值指出了不允许有浮动对象的边情况,对象左边不允许有浮动、右边不允许有浮动、不允许有浮动对象。

4. css结构

div {
                clear: left
            }


            div {
                clear: right
            }


            div {
                clear: both
            }

三、div clear常用的情况

最常用是使用clear:both清除浮动。

比如一个大对象内有2个小对象使用了css float样式为了避免产生浮动,大对象背景或边框不能正确显示,这个时候就需要clear:both清除浮动。

四、案例

1. 案例说明

设置一个css宽度(css width)为500px; 盒子(div ),css边框(css border)为红色,css背景(css background)为黑色、css padding为10px盒子,里面包裹着2个小盒子,一个css 浮动靠右(float:right)、一个css float靠左(float:left),两者边框为白色,背景颜色为灰色,宽度为200px,css高度、css height为150px。

这样来观察案例效果,看浮动产生并使用clear清除浮动。

css代码:

.div css5 {
                width: 500px;
                background: #000;
                border: 1px solid #F00;
                padding: 10px
            }


            .div  css5_left,
            .div  css5_right {
                border: 1px solid #FFF;
                background: #999;
                width: 200px;
                height: 150px
            }
            /* css注释:这里为了截图分别,对css代码换行 */


            .div  css5_left {
                float: left
            }
            /* css注释:设置浮动靠左 */


            .div  css5_right {
                float: right
            }
            /* css注释:设置浮动靠右 */

html代码片:

<div  class="div css5">
            <div  class="div css5_left">float left盒子</div   >
            <div  class="div css5_right">float right盒子</div   >
        </div>

案例效果截图

一篇文章带你了解CSS clear both清除浮动

2. 清除浮动方法

在css代码中加入CSS代码:

.clear{ clear:both}

Html代码中“.div css5”盒子*结束标签前加入代码:

<div  class="clear"></div>
一篇文章带你了解CSS clear both清除浮动

清除浮动效果图:

一篇文章带你了解CSS clear both清除浮动

五、总结

本文基于Html基础,介绍了在实际开发中,可以使用clear可以清除float产生的浮动。在使用clear样式对象加入位置,只需要在此对象div标签结束前,加入即可清除内部小盒子产生浮动。而一般常用clear:both来清除浮动。采用代码加截图的方式,希望能够更好的帮助你学习。

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

——————- End ——————-

往期精彩文章推荐:

手把手教你用Javascript制作随机星星效果图

一、前言

在浏览一些图片网站的时候,经常会看到很多的漂亮的星空图,比如,下面的图片。其实这种星星图片的效果,也可以通过html+css样式和js的方式来实现。今天教大家如何实现星星图的效果。

二、项目准备

软件:Dreamweaver

三、实现的目标

每次刷新产生随机的星星个数。显示画布上。

四、项目实现

1. 创建canvas画布

<body>
    <canvas id='canvas'></canvas>
</body>

2. 添加css样式。

给canva 画布加上边框,方便观察。

<style type="text/css">
    canvas{
        border:2px solid #f00;
}
</style>

3.添加js样式

3.1 设置canvas画布大小 ,定义需要变量。

<script type="text/javascript">
     var _canvas=document.getElementById("canvas")
    _canvas.width=500;
    _canvas.height=500;
var r,g ,b,a;
</script>

3.2 产生随机圆。

for (var j = 0; j < 150; j++) {
        arc.x=Math.floor(Math.random()*_canvas.width);
        arc.y=Math.floor(Math.random()*_canvas.height);
        arc.r=Math.floor(Math.random()*31+10);
        r=Math.ceil(Math.random()*256);
        g=Math.ceil(Math.random()*256);
        b=Math.ceil(Math.random()*256);
        a=Math.random();


        darw();
}

3.3 定义draw()方法,通过画星星公式,将圆形转换成星星状 for 循环产生随机位置星星。

如何画星星?(公式解析)(图片来源百度)

星星有内切圆和外切圆,每两个点之间的角度是固定的,因此可得到星星的每个点的坐标,画出星星。

/* 随机产生星星*/
for (var i = 0; i < 5; i++) {


        _ctx.lineTo(Math.cos((18+72*i)/180*Math.PI)*arc.r+arc.x, -Math.sin((18+72*i)/180*Math.PI)*arc.r+arc.y);


         _ctx.lineTo(Math.cos((54+72*i)/180*Math.PI)*arc.r/2+arc.x, -Math.sin((54+72*i)/180*Math.PI)*arc.r/2+arc.y);
     
}

3.4 随机产生颜色。

Math函数随机产生0-225的RGB值。

/* 随机颜色*/ 
    _ctx.fillStyle="rgba(" + r + "," + g + "," + b + "," + a + ")"; 
    _ctx.fill();
        _ctx.strokeStyle="rgba(" + r + "," + g + "," + b + "," + a + ")";
      _ctx.stroke();
      }

3.5. 调用draw()方法实现功能。

darw();

五、效果展示

1、点击f12运行到浏览器

2、每次刷新网页,随机产生不一样的星星和随机颜色。

六、总结

  1. 本项目利用canvas画布,实现星星图的效果,以及在运用javascript产生星星效果时,遇到的一些难点进行了分析及提供解决方案。
  2. 欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。
  3. 代码很简单,希望对你有所启发。

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

——————- End ——————

往期精彩文章推荐:

手把手用Python教你如何发现隐藏wifi

手把手教你用Python做个可视化的“剪刀石头布”小游戏

手把手用Python网络爬虫带你爬取全国著名高校附近酒店评论

一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

【一、项目简介】

本文主要目标是采集淘宝的评价,找出客户所需要的功能。统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等。

 

【二、项目准备工作】

1. 准备Pycharm,下载安装等,可以参考这篇文章:Python环境搭建—安利Python小白的Python和Pycharm安装详细教程

2. 爬取商品地址,如下所示:

https://detail.tmall.com/item.htm?spm=a230r.1.14.1.55a84b1721XG00&id=552918017887&ns=1&abbucket=17

3. 需要下载几个库,如何下载呢?

打开pycharm软件点击File在点击setting选项,再选择Project:你的文件名下边的Project:Interpreter选项。

一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

点击+号,安装这个项目需要用的库,例如:requests、beautifulsoup4、simplejson。

一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

 

【三、项目实现】

1. 导入需要的库

import requests
from bs4 import  BeautifulSoup as bs
import json
import csv
import re

2. 需要登录淘宝网,选择谷歌浏览器选择开发者工具或按F12有个Network选项,查找list_detail_rate.htm?文件

一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

定义一个变量存储URL地址PAGE_URL = []

定义一个生成链接列表函数,使用字符串拼接形成评论的页数

一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

定义一个获取评论数据函数内定义需要用到的字段例如:用户名、评论时间、颜色分类、评论,如下图所示。

一篇文章教会你用Python爬取淘宝评论数据(写在记事本)
一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

那个cookie值在在开发者工具Network有个item.htm?spm文件有个cookie复制过来就好了。

一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

解析JS文件内容、将数据写入TEXT文件中,如下图所示。

一篇文章教会你用Python爬取淘宝评论数据(写在记事本)
一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

最后定义一个主函数爬取需要的评论页数,如下图所示。

一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

最后得到的结果如图所示:

一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

 

【四、总结】

1. 本文基于Python网络爬虫,采集了淘宝商品的评价,方法行之有效。但是建议不要抓取太多,以免对服务器造成压力。

2. 如果需要本文源码,请在公众号后台回复“淘宝评论”获取。

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

——————- End ——————-

往期精彩文章推荐:

手把手用Python教你如何发现隐藏wifi

手把手教你用Python做个可视化的“剪刀石头布”小游戏

手把手用Python网络爬虫带你爬取全国著名高校附近酒店评论