首页
开往
统计
留言
Search
1
Docker的基础操作
878 阅读
2
Linux基础基本操作
529 阅读
3
文件压缩
183 阅读
4
Dockerfile构建Nginx镜像
179 阅读
5
mysql字段类型
169 阅读
linux
建站技术
Java
Python
Mysql
其他技术
登录
Search
标签搜索
linux
docker
python
mysql
建站技术
爬虫
java
shell脚本
小钊
累计撰写
14
篇文章
累计收到
0
条评论
首页
栏目
linux
建站技术
Java
Python
Mysql
其他技术
页面
开往
统计
留言
搜索到
14
篇与
的结果
2024-06-24
python爬虫教程
requests库及lxml库入门靶场地址:http://spiderbuf.cn/s01/from lxml import etree import requests import csv html = requests.get("http://spiderbuf.cn/s01/").text # 取网页源码 parse_html = etree.HTML(html) # 解析html data = [] # 初始化数据列表 data.append(parse_html.xpath("//thead/tr/th/text()")) # 取标头内容并添加到数据列表 f = open("info.csv", 'w', encoding='utf-8', newline='') # 使用w打开info.csv文件 csv = csv.writer(f) # 创建csv对象 table = parse_html.xpath("//tbody//tr") # 取所有的数据列 for i in table: # 循环每个数据列 data.append(i.xpath(".//td//text()")) # 读取每列的数据并添加到数据列表 csv.writerows(data) # 调用函数写入csv文件此次练习使用了1.lxml库的etree类,用于解析html并取相关数据2.requests库,用于发起网页请求,获取网页源码3.csv库,用于保存爬取到的数据2.http请求分析及头构造使用靶场地址:http://spiderbuf.cn/s02/import requests import csv from lxml import etree headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0" } html = requests.get(url="http://spiderbuf.cn/s02/", headers=headers).text # 取网页源码 parse_html = etree.HTML(html) # 解析html data = [] # 初始化数据列表 data.append(parse_html.xpath("//thead/tr/th/text()")) # 取标头内容并添加到数据列表 f = open("info.csv", 'w', encoding='utf-8', newline='') # 使用w打开info.csv文件 csv = csv.writer(f) # 创建csv对象 table = parse_html.xpath("//tbody//tr") # 取所有的数据列 for i in table: # 循环每个数据列 data.append(i.xpath(".//td//text()")) # 读取每列的数据并添加到数据列表 csv.writerows(data) # 调用函数写入csv文件此题与第一题的区别是添加了请求头,因为网页做了请求头校验requests默认的请求头是python分页参数分析及翻页爬取靶场地址:http://spiderbuf.cn/s04/?pageno=1from lxml import etree import requests import csv data = [] # 初始化数据列表 f = 1 # 标记是否是首次运行 for i in range(1, 6): # 循环页数 url = "http://spiderbuf.cn/s04/?pageno="+str(i) # 拼接url print(url) html = requests.get(url).text # 取网页源码 parse_html = etree.HTML(html) # 解析html if f: data.append(parse_html.xpath("//thead/tr/th/text()")) # 取标头内容并添加到数据列表 f = 0 # 运行后将值更改为0即非第一次运行 table = parse_html.xpath("//tbody//tr") # 取所有的数据列 for i in table: # 循环每个数据列 td = i.xpath(".//td//text()") td.pop(0) data.append(td) # 读取每列的数据并添加到数据列表 f = open("info.csv", 'w', encoding='utf-8', newline='') # 使用w打开info.csv文件 csv = csv.writer(f) # 创建csv对象 csv.writerows(data) # 调用函数写入csv文件这题难点在于拼接字符串时的数据类型,与初始化数据列表放置的位置无序号翻页靶场地址:http://spiderbuf.cn/e03/import requests from lxml import etree import csv data = [] def get_page_info(url: str) -> list: global data html = requests.get(url).text # 获取初始页内容 parse_html = etree.HTML(html) table = parse_html.xpath("//tbody//tr") # 取所有的数据列 for i in table: # 循环每个数据列 data.append(i.xpath(".//td//text()")) # 读取每列的数据并添加到数据列表 return data html = requests.get("http://spiderbuf.cn/e03/").text # 获取初始页内容 parse_html = etree.HTML(html) # 调用方法解析html text = parse_html.xpath('//ul[@class="pagination"]//li//a//@href') """ xpath解析: //ul[@class="pagination"] 从网页根进行匹配类名为pagination的ul列表 //li 继续从上衣一步中继续匹配li元素 //a 继续从上一步中继续匹配a元素 //@href 继续从上一步取出href属性的值 """ data.append(parse_html.xpath("//thead/tr/th/text()")) # 取标头内容并添加到数据列表 for path in text: # 循环列表取每页page的名称 url = "http://spiderbuf.cn/e03/" + path # 拼接当前page的链接 get_page_info(url) # 调用函数进行读取当前page下的数据 f = open("info.csv", 'w', encoding='utf-8', newline='') # 使用w打开info.csv文件 csv = csv.writer(f) # 创建csv对象 csv.writerows(data) # 调用方法将文件写入csv文件内难点:在于他的页路径不是有规律的,而是无规律的,需要使用xpath获取到每页的页索引
2024年06月24日
154 阅读
0 评论
0 点赞
2024-05-12
lnmp分布式环境
一、yum源配置mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 备份源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # 下载阿里云yum源二、yum源配置1.mariadb节点yum -y install mariadb mariadb-server2.nginx节点yum -y install nginx3.php节点yum -y install php php-mysql php-fpm二、配置1.mariadb节点systemctl restart mariadb # 重启数据库 mysqladmin -uroot password 000000 # 设置数据库密码 mysql -uroot -p000000 -e "create database wordpress;" # 创建数据库 mysql -uroot -p000000 -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '000000' WITH GRANT OPTION;" # 设置root的权限(请勿直接在生产环境运行,因为运行后会给所有ip远程登录权限) mysql -uroot -p000000 -e "FLUSH PRIVILEGES;"# 刷新权限2.nginx节点systemctl restart nginx # 重启nginx编辑nginx的配置文件添加默认文档设置运行目录设置php服务器的ip例子:location / { root /www;# 修改运行目录 index index.php index.html index.htm; # 添加index.php } ....... location ~ \.php$ { root /www;# 修改运行目录 fastcgi_pass 192.168.200.143:9000; # php服务器ip fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; .......编辑fastcgi_paramsfastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;# 添加这段内容fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 在相应位置添加这行 fastcgi_param REQUEST_URI $request_uri;3.php节点systemctl restart php-fpm # 重启php-fpm useradd -s /sbin/nologin nginx # 新增用户 mkdir /www # 创建运行目录(存放代码,根据自己的环境进行修改) chown nginx:nginx /www/ # 设置允许目录的权限编辑www.conf将listen的127.0.0.1改为自己php服务器的ip注释listen.allowed_clients或将其值更改为any(即所有机器都有访问权限),也可将值设置为nginx服务器的ip例子: listen = 192.168.200.143:9000 ...... ;listen.allowed_clients = 127.0.0.1 ...... listen.owner = nginx listen.group = nginx listen.mode = 0666 user = nginx group = nginxphp配置完后再次将nginx、php-fpm重启systemctl restart nginx # nginx节点重启 systemctl restart php-fpm # php节点重启
2024年05月12日
145 阅读
0 评论
0 点赞
2024-04-10
Docker的基础操作
镜像操作查看镜像列表# 命令 docker images # 输出结果 :'REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 3218b38490ce 3 weeks ago 516MB' # 各个选项参数如下所示: :'REPOSITORY:表示镜像的仓库源。 TAG:镜像的标签。 IMAGE ID:镜像ID。 CREATED:镜像创建时间。 SIZE:镜像大小。' # TAG可以用来标记同一镜像的不同版本,如nginx:latest和nginx:1.16.1即表示nginx的最新版和nginx的查找镜像# 命令结构 docker search [OPTIONS] TERM # OPTIONS说明如下: :'--automated:只列出automated build类型的镜像。 --no-trunc:显示完整的镜像描述。 --filter=stars:列出收藏数不小于指定值的镜像。' # 例如查找mysql镜像且收藏数不小于25 docker search --filter=stars=25 mysql # 运行结果会有如下参数 :'NAME:镜像仓库源的名称。 DESCRIPTION:镜像的描述。 OFFICIAL:是否是Docker官方发布。 STARS:类似GitHub里面的STARS,表示点赞、喜欢的意思。 AUTOMATED:自动构建。'拉取镜像# 命令结构 docker pull [OPTIONS] NAME[:TAG|@DIGEST] # OPTIONS说明如下: :'-a:拉取所有tagged镜像。 --disable-content-trust:忽略镜像的校验,默认开启。' # 例如要拉取nginx:1.16.1镜像 docker pull nginx:1.16.1推送镜像# 命令结构 docker push [OPTIONS] NAME[:TAG] # OPTIONS说明: :'--disable-content-trust :忽略镜像的校验,默认开启' # 例如将本地的myapache:v1推送到仓库中 docker push myapache:v1删除镜像# 命令结构 docker rmi [OPTIONS] IMAGE [IMAGE...] # OPTIONS说明如下: :'-f:强制删除。 --no-prune:不移除该镜像的过程镜像,默认移除'容器操作创建容器# 命令结构 docker run [options] 镜像名 # OPTIONS说明如下: :'-i:表示创建要给交互式容器。 -t:表示运行容器的同时创建一个伪终端,常与-i搭配使用。 --name:自定义容器名。'查看容器列表# 命令结构 docker ps [options] # OPTIONS说明如下: :'-l:默认的查看只会查看正在运行中的容器信息。 -a:显示所有运行过的镜像信息。 -q:表示只显示对应的容器ID信息。'删除容器# 命令结构 docker rm [options] 容器ID # OPTIONS说明如下: -f:表示强制删除。暂停容器(正常关机)# 命令结构 docker stop 容器ID运行容器# 命令结构 docker run [options] 镜像名 # OPTIONS说明如下: :'-i:表示创建要给交互式容器。 -t:表示运行容器的同时创建一个伪终端,常与-i搭配使用。 --name:自定义容器名。' 重启容器# 命令结构 docker restart 容器ID暂停容器(“拔电源”)# 命令结构 docker kill 容器ID查看容器日志# 命令结构 docker logs 容器ID # OPTIONS说明如下: :'-f:跟随打印最新的日志追加在最后面。 -t:显示日志打印的时间戳。 -tail:显示最新的指定数量的几条日志信息。'查看容器线程信息# 命令结构 docker top 容器ID查看容器内部细节信息# OPTIONS说明如下: docker inspect 容器ID
2024年04月10日
878 阅读
0 评论
0 点赞
2024-04-10
Dockerfile构建Nginx镜像
构建基础环境mkdir nginx cp /etc/yum.repos.d/local.repo nginx/ cd nginx curl -O http://mirrors.douxuedu.com/cloud/nginx-1.12.2.tar.gz编写Dockerfilecat >> Dockerfile <<EOF FROM centos:7 MAINTAINER test RUN yum -y update RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make RUN useradd -M -s /sbin/nologin nginx ADD nginx-1.12.2.tar.gz /usr/local/src WORKDIR /usr/local/src WORKDIR nginx-1.12.2 RUN ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-http_flv_module RUN make && make install ENV PATH /usr/local/nginx/sbin:\$PATH EXPOSE 80 EXPOSE 443 RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf ADD run.sh /run.sh RUN chmod 755 /run.sh CMD ["/run.sh"] EOF编写启动脚本cat > run.sh <<EOF #!/bin/bash /usr/local/nginx/sbin/nginx EOF执行docker buid构建镜像docker build -t nginx:centos . # 以下是运行结果片段 :'...... Step 16/17 : RUN chmod 755 /run.sh ---> Running in 12f5dc188264 Removing intermediate container 12f5dc188264 ---> 7c9ad8959c34 Step 17/17 : CMD ["/run.sh"] ---> Running in 17404a6af1a7 Removing intermediate container 17404a6af1a7 ---> 13adc5edfafa Successfully built 13adc5edfafa Successfully tagged nginx:centos // 此镜像构建过程时间为1-2分钟,请耐心等待!'验证# 查看镜像列表 docker images # 如有nginx:centos即构建成功
2024年04月10日
179 阅读
0 评论
0 点赞
2024-04-09
dockerfile及创建jdk镜像实操
Dockerfile是什么Dockerfile是一个文本文档,其中包含了组合映像的命令,可以使用在命令行中调用任何命令。Docker通过读取Dockerfile中的指令自动生成映像。Dockerfile分为呢几部分基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,Dockerfile中“#”为Dockerfile中的注释Dockerfile主要指令有哪些FROM:指定基础镜像,必须为第一个命令。 MAINTAINER:维护者信息。 RUN:构建镜像时执行的命令。 ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget。 COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源。 CMD:构建容器后调用,也就是在容器启动时才进行调用。 ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去“application”,只使用参数。 LABEL:用于为镜像添加元数据。 ENV:设置环境变量。 EXPOSE:指定与外界交互的端口。 VOLUME:用于指定持久化目录。 WORKDIR:工作目录,类似于cd命令。 USER:指定运行容器时的用户名或UID,后续的RUN也会使用指定用户。使用USER指定用户时,可以使用用户名、UID或GID,或是两者的组合。当服务不需要管理员权限时,可通过该命令指定运行用户。 ARG:用于指定传递给构建运行时的变量。 ONBUILD:用于设置镜像触发器。实操一下吧以centos:latest为基础镜像,安装JDK 1.8并构建新的镜像centos-jdkmkdir centos-jdk mv jdk/jdk-8u141-linux-x64.tar.gz ./centos-jdk/ cd centos-jdk/ # 将dockerfile指令写入到Dockerfile文件内 cat > Dockerfile << EOF FROM centos MAINTAINER test RUN mkdir /usr/local/java ADD jdk-8u141-linux-x64.tar.gz /usr/local/java/ RUN ln -s /usr/local/java/jdk1.8.0_141 /usr/local/java/jdk ENV JAVA_HOME /usr/local/java/jdk ENV JRE_HOME \${JAVA_HOME}/jre ENV CLASSPATH .:\${JAVA_HOME}/lib:\${JRE_HOME}/lib ENV PATH \${JAVA_HOME}/bin:$PATH EOF docker build -t="centos-jdk" . # 执行docker buid命令 docker build -t="centos-jdk" . # 一下是输出结果 :'Sending build context to Docker daemon 185.5MB Step 1/9 : FROM centos ---> 0f3e07c0138f Step 2/9 : MAINTAINER test ---> Running in 1a6a5c210531 Removing intermediate container 1a6a5c210531 ---> 286d78e0b9bf Step 3/9 : RUN mkdir /usr/local/java ---> Running in 2dbbac61b2cf Removing intermediate container 2dbbac61b2cf ---> 369567834d80 Step 4/9 : ADD jdk-8u141-linux-x64.tar.gz /usr/local/java/ ---> 8fb102032ae2 Step 5/9 : RUN ln -s /usr/local/java/jdk1.8.0_141 /usr/local/java/jdk ---> Running in d8301e932f7c Removing intermediate container d8301e932f7c ---> 7c82ee6703c5 Step 6/9 : ENV JAVA_HOME /usr/local/java/jdk ---> Running in d8159a32efae Removing intermediate container d8159a32efae ---> d270abf08fa2 Step 7/9 : ENV JRE_HOME ${JAVA_HOME}/jre ---> Running in 5206ba2ec963 Removing intermediate container 5206ba2ec963 ---> a52dc52bae76 Step 8/9 : ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib ---> Running in 41fbd969bd90 Removing intermediate container 41fbd969bd90 ---> ff44f5f90877 Step 9/9 : ENV PATH ${JAVA_HOME}/bin:$PATH ---> Running in 7affe7505c82 Removing intermediate container 7affe7505c82 ---> bdf402785277 Successfully built bdf402785277 Successfully tagged centos-jdk:latest' . # 测试部分 # 查看docker镜像 docker images # 创建容器进行测试 docker run -it centos-jdk /bin/bash # 以下命令在容器内运行 java -version # 运行输出 : 'java version "1.8.0_141" Java(TM) SE Runtime Environment (build 1.8.0_141-b15) Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode) '
2024年04月09日
144 阅读
0 评论
0 点赞
1
2
3