解决方案:数据采集工具,免费工具让数据实现全自动化

优采云 发布时间: 2022-12-09 01:26

  解决方案:数据采集工具,免费工具让数据实现全自动化

  数据采集工具,什么是数据自动化采集工具,如何完全自动化采集数据。今天给大家分享一个免费的数据采集工具,只需要输入域名,或者输入关键词即可自动采集数据工具,请看图片教程了解详情。

  如果硬要网站优化排名的稳定性,数据采集这个工具真的不比网站优化关键词简单。并且通过我长期的观察和理论,总结了一些关于网站优化排名的经验。说到网站稳定性优化,一般人都会在首页看到一些大字。其实对于很多网站来说,内页的长尾流量是不容忽视的,数据采集可以决定内页的长尾排名能否稳定在同一水平上基础作为主页。也有一定的区别。关于首页的稳定性,目前已经有了比较全面的通用识别方法,比较重要的有以下几点。

  一是稳定性。网站优化排名是否稳定,是所有百度引擎网站优化搜索引擎给予网站高权重的根本前提。如果没有根本的稳定性,那么其他的外部链接网站优化都是一句空话。稳定性还包括几个方面:服务器及其网络的稳定性。Data采集 的工具对您来说是显而易见的,因此无需解释。要成为激进分子,请尝试寻找具有良好声誉的大型服务提供商。相比之下,虽然价格略高,但服务器和网络的性价比更高。

  

  二是网站优化信息稳定性。网站优化后的标题和描述不可随意修改。网站 在这个attention停止优化之前,加了修正,不能说是凭空而来。数据工具 采集 现在好多了。偶尔的更改不会产生太大影响,但这并不意味着您可以经常更改它们。

  三是内容的稳定性。我们知道百度引擎的网站优化搜索引擎喜欢比较新鲜事物网站来优化排名,但是这个新的并不意味着网站优化排名会在几天内发生变化。我们要坚持每天定时添加一定数量的新内容,尽量原创,不要太少。这有利于吸收蜘蛛。但是手机首页的内容全部改了,连模板都改了,很不利。再过几天,肯定会落地。还有外部链接。数据采集工具 当网站优化有排名的时候,我们得想办法每天给它定时加5个左右的外链,不一定多,但是价格也不错。友情链接也是不错的选择,但不要太多,一般30个左右就够了,然后经常查看,有异常的站马上删除。之后是网站的平安优化排名。

  网站优化的安全性也很重要。需要定期给后台和服务器打补丁,维护时注意防火墙设置,尽量不要使用黑客和病毒木马。数据采集工具,那么网站结构优化维护也不容忽视。当我们每天维护内容时,页面不可避免地会被更改、移动和删除。所以我们总是检查是否有死链接或指向同一页面的几个不同链接。如果能做到以上几点,相信在首页的排名已经比较稳定了。当首页有权重时,内页的权重也会相应增加,从而带来大量的长尾流量。

  网站优化是一个循序渐进的过程,需要不断维护。即使你的关键词排名已经到了第一页,如果维护不当,数据采集对象的排名还是会下降。那么,关键词 排名应该如何保持呢?

  

  1.坚持定期更新内容

  如果您要优化的 网站 具有很强的竞争力,当 关键词 排名第一或第一时不要掉以轻心。需要根据用户的需求每天定时更新文章。数据工具 采集 首先,更新的内容应该是 原创 或尽可能高质量的 伪原创。最佳字数在 600 到 800 字之间。如果你的优化网站竞争不是很激烈,你可能需要每天更新,但也不要忘记消耗它。没有流量自然就没有转化。

  2. 不要以任何方式修改网站

  网站改版包括多种,如:网站的三大标签、网站结构、网站 URL路径等。TOOLS OF DATA 采集当网站的关键词排名稳定后,请不要尝试以任何方式纠正网站,因为任何纠正都可能在某种程度上影响网站的关键词 排名。

  3.定期查看友情链接

  友情链接并不意味着交换完成后需要检查。数据采集东西我们要定期查看友情链接,因为交换的网站如果打不开,就会被K站屏蔽,否则就会降级。如果不及时处理,将严重影响我们自己的网站 关键词排名。

  解决方案:【02】Ansible 自动化配置进阶

  Ansible 剧本 1、剧本编写格式

  1、yml语法

1)缩进:每个缩进有2个空格组成(ansible没有那么严格有缩进即可,saltstack必须两个空格)

2)冒号:所有冒号后面必须有空格,以冒号结尾除外。

3)短横线:表示列表项,使用一个短横杠加一个空格。福讴歌想使用通用的缩进级别作为同一列表。

-----------------------------------------------------------------------------------------

2、官方推荐写法

[root@manage-61 project]# cat p1.yml

---

#play

- hosts: webservers

#tasks

tasks:

- name: Installed Httpd Server

yum:

name: httpd

state: present

- name: Start Httpd Server

systemd:

name: httpd

state: started

enabled: yes

-----------------------------------------------------------------------------------------

3、多paly语法示例

[root@manage-61 project]# cat p1.yml

#play

- hosts: webservers

tasks:

- name: Installed Httpd Server

yum: name=httpd state=present

- name: Start Httpd Server

systemd: name=httpd state=started enabled=yes

- name: Start Firewalld Server

systemd: name=firewalld state=started enabled=yes

- name: Configure Firewalld Server

firewalld: service=http immediate=yes permanent=yes state=enabled

- hosts: web01

tasks:

- name: Configure web01 Website

copy: content='This is Web01' dest=/var/www/html/index.html

- hosts: web02

tasks:

- name: Cofnigure web02 weisite

copy: content='This is Web02' dest=/var/www/html/index.html

-----------------------------------------------------------------------------------------

4、检查语法,只检查是否是yml语法格式,并不做逻辑校验。

[root@manage-61 project]# ansible-playbook --syntax-check p1.yml

playbook: p1.yml

5、模拟执行(不是真的执行)

[root@manage-61 project]# ansible-playbook -C p1.yml

6、真实的描述状态(被控端的状态必须与控制端描述的状态一致)

[root@manage-61 project]# ansible-playbook p1.yml

  2. 剧本练习 1) 剧本-NFS

  思路:

1)安装

2)配置(用户,/data,)

3)启动

4)firewalld

-----------------------------------------------------------------------------------------

1、编写源文件

[root@manage-61 project]# cat exports.j2

/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

2、编写nfs的playbook

[root@manage-61 project]# cat nfs.yml

###NFS###

- hosts: web01

tasks:

- name: Install NFS-utils Server

yum: name=nfs-utils state=present

- name: Configure NFS-utils Server

copy: src=./exports.j2 dest=/etc/exports owner=root group=root mode=0644

notify: Restart NFS Server

- name: Create NFS Group

group: name=www gid=666

- name: Create NFS User

user: name=www uid=666 group=www create_home=no shell=/sbin/nologin

- name: Create Data Directory

file: path=/data state=directory owner=www group=www mode=0755 recurse=yes

- name: Start NFS Server

systemd: name=nfs state=started enabled=yes

handlers:

- name: Restart NFS Server

systemd: name=nfs state=restarted

- hosts: web02

tasks:

- name: Mount NFS Server

mount: path=/opt src=172.16.1.7:/data fstype=nfs opts=defaults state=mounted

  2)剧本-灯

  思路:

1)使用yum安装 httpd、php、php-mysql、mariadb、firewalld等

2)启动httpd、firewalld、mariadb等服务

3)添加防火墙规则,放行http的流量,并永久生效

4)使用get_url下载 http://fj.xuliangwei.com/public/index.php 文件

-----------------------------------------------------------------------------------------

1、编写nfs的playbook

[root@manage-61 project]# cat lamp.yml

- hosts: webservers

- hosts: otherservers

tasks:

- name: Installed Web Packages

yum: name=httpd,mariadb-server,php,php-mysql,php-pdo state=present

- name: Start Web Serivce

service: name=httpd state=started

- name: Start Mariadb Service

service: name=mariadb state=started

- name: Get Wordpress

unarchive: src=./wordpress-5.0.3-zh_CN.tar.gz dest=/var/www/html/ copy=yes mode=0755 #解压模块

# - name: Copy Index.php

# copy: src=./index.php.j2 dest=/var/www/html/index.php

# - name: Get Url index.php

# get_url: url="http://fj.xuliangwei.com/public/index.php" dest=/var/www/html/index.php

  Ansible 变量解析 1,定义变量 1) 变量

  #安装两个软件包使用变量方式

[root@manage-61 project]# cat p2.yml

- hosts: webservers

vars:

- web_package: httpd

- ftp_package: vsftpd

tasks:

- name: Installed Packages

yum:

name:

- "{{ web_package }}"

- "{{ ftp_package }}"

state: present

  2)vars_files

  [root@manage-61 project]# cat vars.yml #变量文件

web_package: httpd

ftp_package: vsftpd

[root@manage-61 project1]# cat p2.yml

- hosts: webservers

vars_files: ./vars.yml

tasks:

- name: Installed Packages

yum:

name:

- "{{ web_package }}"

- "{{ ftp_package }}"

state: present

  3)库存定义变量

  #主机变量优先级高于主机组变量(不推荐,容易将环境弄的特别乱)

[root@manage-61 project]# vim /etc/ansible/hosts

[webservers]

web01 ansible_ssh_host=172.16.1.7

web02 ansible_ssh_host=172.16.1.8

[webservers:vars]

file_name=group_vars

[root@manage-61 project]# cat p3.yml

- hosts: webservers

tasks:

- name: Create File

file: path=/tmp/{{ file_name }} state=touch

  4) hosts_vars和group_vars

  1)更好的方式是在ansible的项目目录中创建额外的两个变量目录,分别是hosts_vars和group_vars

[root@manage-61 project]# mkdir hosts_vars

[root@manage-61 project]# mkdir group_vars

2)group_vars目录下必须存放和inventory清单文件中定义的组名一致,如下:

[root@manage-61 project]# cat /etc/ansible/hosts

[webservers]

<p>

web01 ansible_ssh_host=172.16.1.7

web02 ansible_ssh_host=172.16.1.8

3)定义组变量

[root@manage-61 project]# cat group_vars/webservers

web_package: httpd

ftp_package: vsftpd

4)组变量生效

[root@manage-61 project]# cat p4.yml

- hosts: webservers

tasks:

- name: Installed Packages

yum:

name:

- "{{ web_package }}"

- "{{ ftp_package }}"

state: present

[root@manage-61 project]# ansible-playbook p4.yml

5)系统提供了特殊的组,all,也就说在group_vars目录下创建一个all文件,定义变量对所有的主机都生效

[root@manage-61 project]# cat group_vars/all

web_package: httpd

ftp_package: vsftpd

6)创建hosts_vars变量

[root@manage-61 project1]# cat host_vars/web01

web_package: zlib-static

ftp_package: zmap

[root@manage-61 project1]# cat group_vars/webservers

web_package: httpd

ftp_package: vsftpd

7)结论:主机变量优先于主机组变量,不常用。</p>

  5) 命令行定义变量

  1)通过命令行覆盖变量,inventory的变量会被playbook文件中覆盖,这两种方式的变量都会被命令行直接指定变量所覆盖。

使用--extra-vars或-e设定变量。

[root@manage-61 project1]# ansible-playbook p4.yml -e "web_package=zarafa-devel" -e "ftp_package=zarafa-utils"

  6) 变量的优先级

  命令行定义变量>由 定义的变量

  播放文件>清单文件定义的变量

  2. 变量矩阵

  变量还支持分层定义,使用 “.”可能会出现问题,建议改用“[]”。

  lamp.web.web_package

  lamp.web.db_package

  [root@manage-61 project]# cat vars1.yml

rainbow:

web:

web_package: httpd

db_package: mariadb

code:

web:

filename: code_web_filename

[root@m01 project1]# cat p8.yml

- hosts: webservers

vars_files: ./vars1.yml

tasks:

- name: Install Package

yum: name= "{{ rainbow[&#39;web&#39;][&#39;web_package&#39;] }}"

- name: create filename

file:

path: /tmp/{{ code.web.filename }}

state: touch

  3. 变量注册

  1) register变量注册,通过debug显示输出,msg取值

[root@manage-61 project]# cat p9.yml

- hosts: webservers

tasks:

- name: Get Network Port Status

shell: netstat -lntp

register: net_port

- name: OutPut Network Port Status

debug:

msg: "{{ net_port.stdout_lines }}"

  4. 事实变量 1) 基本概述

  Ansible 事实是由 ansible 通过 ansible 在托管主机上自动采集发现的变量。

  事实收录有关每个特定主机的信息:主机名、IP 地址、系统版本、CPU 数量、内存状态、磁盘状态等。

  2)应用场景 3)变量采集

  1)获取web01的facts变量信息

[root@manage-61 ~]# ansible web01 -m setup > /tmp/facts.txt

2)获取facts的变量,需要使用filter进行过滤

[root@manage-61 ~]# ansible web01 -m setup -a "filter=&#39;mb&#39;"

[root@manage-61 ~]# ansible web01 -m setup|grep 172.16.1.7 #建议使用grep过滤

  4) 实践练习

  1)facts基本用法:比如获取被控端的主机名与IP地址

[root@manage-61 ~]# cat facts.yml

- hosts: webservers

tasks:

- name: Output variables ansible facts

debug:

msg: >

this default IPv4 address "{{ ansible_fgdn }}" is "{{ ansible_default_ipv4.

address}}"

-----------------------------------------------------------------------------------------

2)利用facts变量采集生成zabbix配置文件

[root@manage-61 project]# cat zabbix_agentd.conf

Server={{ zabbix_server }}

ServerActive{{ zabbix_server }}

Hostname={{ ansible_hostname }} #facts变量获取

[root@manage-61 project]# cat p10.yml

- hosts: webservers

#gather_facts: no 关闭facts采集

vars:

- zabbix_server: 172.16.1.71

tasks:

- name: Copy Zabbix Agent Configure

template: src=./zabbix_agentd.conf dest=/tmp/zabbix_agent.conf

#facts变量默认采集

#解析变量必须使用template,copy模块不支持拷贝变量。

-----------------------------------------------------------------------------------------

2)playbook安装一个memcached

#1.安装确认memcached

[root@manage-61 ~]# yum install memcached -y

[root@manage-61 ~]# rpm -qc memcached

/etc/sysconfig/memcached

[root@manage-61 ~]# mv /etc/sysconfig/memcached /project/memcached.j2

#2.修改配置文件的参数为facts变量

[root@manage-61 project]# cat memcached.j2

PORT="11211"

USER="memcached"

MAXCONN="1024"

CACHESIZE="{{ ansible_memtotal_mb //2 }}"

OPTIONS=""

#3.查找memcached的facts变量

[root@manage-61 ~]# ansible web01 -m setup -a "filter=&#39;mb&#39;"

#4.编写playbook文件

[root@manage-61 project]# cat mem.yml

- hosts: webservers

tasks:

- name: Installed Memcached

yum: name=memcached state=present

- name: Configure Memcached

template: src=./memcached.j2 dest=/etc/sysconfig/memcached

- name: Start Memcached

service: name=memcached state=started enabled=yes

  任务控制 1.剧本条件语句在以下情况下

  实践 1:为不同的操作系统安装相同的软件包

  #Centos:httpd

#Ubuntu:httpd2

[root@manage-61 project]# cat when.yml

- hosts: webservers

tasks:

- name: Install httpd Server

yum: name=httpd state=present

when: ansible_distribution == "CentOS"

- name: Install httpd Server

apt: name=httpd2 state=present

when: ansible_distribution == "Ubuntu"

  做法 2:为 Web 主机名添加所有 nginx 存储库,并跳过添加其余存储库

  1. 如何添加 yum 存储库

  2.如何判断,判断里面是什么

  ---

- hosts: all

tasks:

- name: Add Nginx Repos

yum_repository:

name: nginx_test

description: Nginx YUM repo

baseurl: http://nginx.org/packages/centos/7/$basearch/

gpgcheck: no

when: (ansible_hostname is match ("web*")) or (ansible_hostname is match ("lb*"))

  实践案例三:通过寄存器将命令执行结果保存到变量中,然后通过 when 语句进行判断

  - hosts: webservers

tasks:

- name: Check Httpd Server

command: systemctl is-active httpd

ignore_errors: yes

register: check_httpd

#- name: debug outprint #仅仅只是输出结果

# debug: var=check_httpd

- name: Httpd Restart

service: name=httpd state=restarted

when: check_httpd.rc == 0

  2、剧本循环语句{{项}}循环变量with_items:

  实践 1:使用循环启动多个服务

  

  [root@manage-61 project]# cat with.yml

- hosts: webservers

tasks:

- name: Start httpd mariadb

systemd: name={{ item }} state=started

with_items:

- httpd

- mariadb

  实践 2:使用定义变量方法在循环中安装包

  - hosts: webservers

tasks:

- name: ensure a list of packages installed

yum: name= "{{ packages }}" state=present

vars:

packages:

- httpd

- httpd-tools

  #弃用的方式(弹出警告)#

  - hosts: webservers

tasks:

- name: ensure a list of packages installed

yum: name= "{{ item }}" state=present

with_items:

- httpd

- httpd-tools

  实践 3:使用字典循环创建用户并批量复制文件

  [root@manage-61 project]# cat loop-user.yml

- hosts: webservers

tasks:

- name: Add Users

user: name={{ item.name }} groups={{ item.groups }} state=present

with_items:

- { name: &#39;testuser1&#39;, groups: &#39;bin&#39; }

- { name: &#39;testuser2&#39;, groups: &#39;root&#39; }

[root@manage-61 project]# cat with4.yml

- hosts: webservers

tasks:

- name: Copy Rsync configure and Rsync passwd

copy: src={{ item.src }} dest={{ item.dest }} mode={{ item.mode }}

with_items:

- { src: "./rsyncd.conf", dest: "/etc/rsyncd.conf", mode: "0644" }

- { src: "./rsync.passwd", dest: "/tmp/rsync.passwd", mode: "0600" }

  3、剧本处理程序通知处理程序

  [root@manage-61 project]# cat han.yml

- hosts: webservers

vars:

- http_port: 8083

tasks:

- name: Install Http Server

yum: name=httpd state=present

- name: Configure httpd server

template: src=./httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf

notify:

- Restart Httpd Server

- Restart PHP Server

- name: Start httpd server

service: name=httpd state=started enabled=yes

handlers:

- name: Restart Httpd Server

systemd: name=httpd state=restarted

- name: Restart PHP Server

systemd: name=php-fpm state=restarted

  处理程序注意事项

  1) 无论有多少任务通知相同的处理程序,处理程序只会在所有任务结束后运行一次。

  2. 只有当任务发生变化时,才会通知处理程序,如果没有变化,则不会触发处理程序

  3. 不能使用处理程序代替任务

  4. 剧本任务标签(用于调试场景) -t 执行指定的标签任务 --skip-tags:执行 --skip-tags 以外的标签任务

  [root@manage-61 project]# cat tag.yml

- hosts: webservers

vars:

- http_port: 8083

tasks:

- name: Install Http Server

yum: name=httpd state=present

tags:

- install_httpd

- httpd_server

- name: configure httpd server

template: src=./httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf

notify: Restart Httpd Server

tags:

- confiure_httpd

- httpd_server

- name: start httpd server

service: name=httpd state=started enabled=yes

tags: service_httpd

handlers:

- name: Restart Httpd Server

systemd: name=httpd state=restarted

[root@manage-61 project]# ansible-playbook tag.yml --list-tags

[root@manage-61 project]# ansible-playbook tag.yml -t httpd_server

[root@manage-61 project]# ansible-playbook tag.yml -t install_httpd,confiure_httpd

[root@manage-61 project]# ansible-playbook tag.yml --skip-tags httpd_server

  5. 剧本文件重用 包括文件重用

  Include包含

include(import_playbook)老版

include_tasks 新版

[root@manage-61 project]# cat task.yml

- hosts: webservers

vars:

- http_port: 801

tasks:

- include_tasks: task_install.yml

- include_tasks: task_configure.yml

- include_tasks: task_start.yml

handlers:

- name: Restart Httpd Server

systemd: name=httpd state=restarted

[root@manage-61 project]# cat task_install.yml

- name: Install Http Server

yum: name=httpd state=present

[root@manage-61 project]# cat task_configure.yml

- name: configure httpd server

template: src=./httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf

notify: Restart Httpd Server

[root@manage-61 project]# cat task_start.yml

- name: start httpd server

service: name=httpd state=started enabled=yes

  6. 剧本忽略错误 忽略错误ignore_errors

  [root@manage-61 project]# cat f9.yml

---

- hosts: webservers

tasks:

- name: Ignore False

command: /bin/false

ignore_errors: yes

- name: touch new file

file: path=/tmp/bgx_ignore state=touch

异常处理

force_handlers: yes #强制调用handlers

changed_when: false #被管理主机没有发生变化,抑制改变的状态的为ok(获取系统的信息状态时使用)

#检查服务的配置是否正常,正常则不处理,不正常则中断

changed_when: httpd_check.stdout.find(&#39;OK&#39;) #查看变量中的某个字符串

[root@manage-61 project]# cat changed_when.yml

- hosts: webservers

vars:

- http_port: 8083

tasks:

- name: configure httpd server

template: src=./httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf

notify: Restart Httpd Server

- name: Check HTTPD

shell: /usr/sbin/httpd -t

register: httpd_check

changed_when:

- httpd_check.stdout.find(&#39;OK&#39;)

- false

- name: start httpd server

service: name=httpd state=started enabled=yes

handlers:

- name: Restart Httpd Server

systemd: name=httpd state=restarted

  7. 剧本错误处理failed_when

  该命令不依靠返回状态码来判断执行是否失败,而是查看命令的返回内容来决定,例如,如果返回的内容收录失败的字符串,则判断为失败。示例如下:

  - name: this command prints FAILED when it fails

command: /usr/bin/example-command -x -y -z

register: command_result

failed_when: "&#39;FAILED&#39; in command_result.stderr"

  8.剧本任务摘要

  #tasks任务处理相关流程与控制参数

when 判断

item 循环

handlers 触发器(需要task使用notify通知)

tags 标签(调试使用)

include_tasks 包含task任务

ignore_errors 忽略错误

#错误处理

force_handlers #扩展

changed_when false 抑制改变的状态为ok(获取系统的状态信息时)

重要(检查服务的配置是否正常,正常则不处理,不正常则中断)

register: httpd_check

changed_when:

- httpd_check.stdout.find(&#39;OK&#39;)

- false

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线