VIEW POST

View more
WP代码碎片知识

WordPess学习笔记

By
on
2020年4月3日
关于在学习WordPress中遇到的问题,整理成笔记


VIEW POST

View more
杂谈

不能迷失….

By
on
2020年5月24日

感觉像个搬砖的…

这段时间,整技术有点整过火了,我看下了日志,前后一个月,从站群整到老域名,上来就是一套系统一套系统的干…

干下来,我的感触是,程序员这个东西,和搬砖没啥区别,拼的是年轻体力!这段时间,我通宵了接近两次,晚上2-3点睡觉几乎是常态…一个月下来,没运动,整个人感觉有点不太对…

虽然技术上进步很大,但是整下来还是发现,远远低估了技术的坑了,很多问题你感觉解决就是分分钟的事情,能搞上了1小时…..

这段时间学了什么?

Django

从一开始搞站群系统,温习了Django+xadmin的课程,整了一个后台,搞了站群程序,可以说类似泛站,然后上线了,就转头去搞老域名了,然后把Django的知识点前后翻了一下,感觉写个简单的web现在问题不大…

Docker集群

整了老域名,发现这个Docker swarm 集群部署是个好东西,接触下来,也发现确实是个好东西,然后整成了一个集群,7台电脑…….
这个东西整下来,唯一的感触,就是部署方便了,而且管理起来更方便,方便到什么程度?我只要在我以前一台登录docker的电脑上输入一条命令,这台电脑我连ssh以后都不用登录,就可以更新,维护了…
这段时间,不光学Dcoker,把liunx的网络基础给补了,然后慕课网上买了两年的docker课程,翻了两遍…

Scrapy

后来又转向Scrapy,因为docker swarm已经够用,Django方面的站群也没出效果,不好继续优化,然后开始转向Scrapy,写采集,同样的,因为会了Django,所以写了一个web,然后会了docker swarm 自然也就把Scrapy搞成分布式了…从一天分析10万快照,到1天分析200万快照量…越先越深…,然后还在研究,如何在2小时内把200万快照分析完,还好没继续弄下去…因为这个事情,有钱就可以解决………可以解决..解决….决……

然后因为采集各种坑,比如:ip被封(ip还是国外的,要不然直接买代理ip了 ,国外的代理ip都按流量收费,哪吃的消…),接着是失败的任务漏掉了,然后是多线程效率问题等等,总之就是搞下来没这么顺利,在采集一个网站的时候,还找了一个逆向的同学帮忙,才整出来…

为什么说迷失?

因为整套下来,我发现,不应该动不动就搞系统,比如采集老域名这个,我甚至都没验证出,什么样的核心因素是好的,然后就搞了一套采集验证的东西..常规的做法,就是域名:

年龄越久越好?
百度有收录就好?
没做够灰色行业?
外链数据不错

其实这些东西,表面看下来没毛病,但是等你做站下去,你会发现都是坑!比如百度收录,你在买的时候,可能都没注意到 他就是一个采集站!,甚至,就是泛站…..因为你一次性拿了10个域名,,,可能太依赖以往的经验了…

然后做过灰色行业一定不好?其实未必,搞不好反而更好
外链数据不错就是好的?那也未必,如果外链是垃圾外链?
有人说,我会看爱站词库,历史的…词库,或是索引量,但是你可能不知道,这个站有被降权过,所以你还要看他词库的波动数据,比如几天时间跌了90%,那么这个可能因为快排降权过,但是,你又怎么确定,这个域名如果换一个行业,然后关站一段时间,效果会不好呢?

总之,一开始思路反了,没有想好我的目标,其实我的目标很简单,就是选择5个好一点的二级域名,然后每个二级域名开100个二级域名,然后去做站…再去拿排名…

如果是这样,域名一定需要采集吗?核心是什么?如果你的模型是错的,一天采集验证40万个域名又如何?其实OKR的核心,很简单,就是时刻关注目标,以及核心点,其他的无关一切剔除….

这段时间这的是完全迷失了,最后研究到自动注册域名的api都来了,然后还采集了聚名网每天的数据,打算扔到系统自动分析….为了5个域名?我花这么大力气整这些,直接花几千块买别人选好的不香吗?
如果分析域名的模型出来了,并且是对的,那么到时候,再来完善验证系统,采集高并发的,是最后一步做的,也是说如果做到这步,那么你基本不缺钱了,那话说回来,我都不缺钱了,那还写什么程序?


VIEW POST

View more
爬虫

python 装饰器异常重试

By
on
2020年5月24日

代码

网上看别人的,稍微做一下修改,这个做用是用与在一些通用任务,假如需要重试的话,可以写成装饰器,这样整体的代码看起来会更加的优雅一下

import time
def mainclick(func):
def wrapper(*args, **kwargs):
#这里重试3次
for i in range(3):
try:


VIEW POST

View more
web开发

在本地命令行远程调用docker解释器里面的python

By
on
2020年5月6日

说明

这两天在部署一个项目的时候,发现docker有很多骚操作,具体是什么?
比如你有一个完整python环境的docker ( 比如装了各种依赖包等等 ),那么就可以在本地的机器调用远程的docker,来执行python了,大概的效果是这样的

(base) zhangte@tedeMacBook-Pro ~ % pythondocker
Python 3.6.9 (default, Nov 11 2019, 11:24:16)
on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

这里用的就是我python的docker…

有什么用

那么肯定有人会说,这有毛用,和本地的ENV不是一样?确实如果是做到这一步那确实是没啥用…
那么如果我说,docker可以组件一个网络呢 ? 比如用 etcd 的方式,就可以组件一个网络.
那么是什么意思?

我可以利用局域网,然后给团队每个人装一个docker ( 连python都不需要装 ),然后就可以远程访问我本地服务器上的环境和解释器,那么团队其他人就是随时随地用脚本,那基本就是一个爽
我可以把这个docker解释器部署到阿里云,那么就有了一个云端环境,那么我所有的服务器,可以调用这个python ( 当然需要消耗阿里云的资源,不推荐这样搞 )

怎么做

单机处理

其实非常简单,先pull python3.6的镜像,然后run一个镜像,完了以后,测试一下
docker exec -it {镜像id} python
如果可以正常进入python,然后把环境变量给加上去,Mac添加环境变量的方法

#bash
vim ~/.bash_profile

#加入
alias pythondocker="docker exec -it fdc9bc5d04e0…


VIEW POST

View more
web开发

用Docker部署django

By
on
2020年5月5日

一. 编辑配置文件

1. 编辑DockerFile

FROM centos/python-36-centos7
USER root

RUN yum -y install httpd*

ADD ./requirements.txt /tmp/requirements.txt

RUN pip install -r /tmp/requirements.txt -i http://mirrors.aliyun.com/pypi/simple –trusted-host mirrors.aliyun.com \
&& pip install mod_wsgi -i http://mirrors.aliyun.com/pypi/simple –trusted-host mirrors.aliyun.com \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN mod_wsgi-express install-module

ADD ./conf/django.conf /etc/httpd/conf.d/django.conf

EXPOSE 80

WORKDIR /PROJECT_ROOT

来自哪个镜像
安装httpd* (…


VIEW POST

View more
web开发

celery 定时任务

By
on
2020年5月4日

通过admin后台配置 ( 推荐 )

前提

需要先配置好celery,如果未配置,请移步到 : http://www.zhangte.org/2322.html

配置

在settings.py里面加入 INSTALLED_APPS += # 异步和定时任务,以及api开发
同步一下数据库,就可以看到后台

附一份settings的参考文件

from celery import platforms
CELERY_BROKER_URL = 'redis://localhost:6379/15'
CELERY_RESULT_BACKEND = 'django-db'
#用celery来管理缓存
# CELERY_CACHE_BACKEND = 'django-cache'
CELERY_ACCEPT_CONTENT =
# 结果序列化方式
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Asia/Shanghai'
CELERY_ENABLE_UTC = False
platforms.C_FORCE_ROOT = True

CELERY_CACHE_BACKEND = 'default'
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'

# django setting.
CACHES = {
'default': {


VIEW POST

View more
未分类

什么是实例化

By
on
2020年5月1日

在python的学习中,经常会遇到实例化的名词

其实实例化的意思很简单
就是一个对象,有了具体的方法(函数),或是具体属性,以后就是实例化了

以前一直不理解这是什么意思,直到最近学了django以后,才有一种恍然大悟的感觉,因为django的models对象就是很好的一种实例化
很搞笑,学了python5年,今年在喝酒以后,才突然悟道,原理就是这么一回事

简单来说,就是具体的对象,就叫实例化

实例化就是一个从抽象到具体的过程

我举个简单的例子,比如正常人写方案,会有一个框架,大致如下:

前提
效果展示
结论不足
采取错误

比如大致是这个框架,其中前提会有拆分几个小点,比如

发生的原因
解决的措施

类似这样的框架,这在面向对象中,就是一个类..

那么类就要实例化,实例化的过程就是给每个类添加具体的说明,让一个原本粗糙的方案,变成一个具体的方案,这个方案就叫做实例化的方案

这个实例化的方案,可以在原有的框架上做一些定制,但是又不会脱离原有的框架的内容..

理解实例化对面向对象的设计,作用非凡!


VIEW POST

View more
未分类

Django-REST-Framewor学习笔记一

By
on
2020年5月1日

1. DRF的使用流程

1.1 创建一个基础的models ( 这是所有的django项目通用 )

1.2 在app下创建serializers.py类

1.3 在Views中的应用

1.4 url的写法

总结

2. 拓展

2.1 返回状态码

1. DRF的使用流程

1.1 创建一个基础的models ( 这是所有的django项目通用 )

这里以最简单的models为说明,我删除了一些官方无用的字段,为了看起来更简单…

from django.db import models
class Snippet(models.Model):
created = models.DateTimeField(auto_now_add=True)
title = models.CharField(max_length=100, blank=True, default='')
code = models.TextField()

class Meta:…

其实很简单,就几步


VIEW POST

View more
web开发

Django-Cleary异步开发笔记

By
on
2020年4月30日

1. 基础准备

1.1 创建项目

1.2 配置celery

1.2.1 创建celery配置文件 ( celery_config.py)

1.2.2 创建celery.py配置文件

1.2.3 配置django项目启动跟随自动启动

2. 使用

2.1 创建tasks文件

2.2 一个简单的tasks文件实例

2.3 配置views.py

2.4 配置urls.py

3.总结

3.0 整体流程思维导图

3.1 这玩意可以干什么?

3.2踩过的坑

1. 基础准备

1.1 创建项目

安装依赖包
pip install -U Celery

创建django目录,大致的文件结构如下:

– proj/
– manage.py
– proj/
– __init__.py
– settings.py
– urls.py

1.2 配置celery

1.2.1 创建celery配置文件 ( celery_config.py)

这个主要是和django的settings做一个区分,要不然揉在一起看起来很不爽,以下是我的配置,可以直接拷贝即可用

from celery import…


VIEW POST

View more
web开发

Django-xadmin 设置inline的方法,以及隐藏的字段

By
on
2020年4月28日

Django xadmin设置inline以及隐藏字段的方法

这里面有个小坑,这边记录一下

理清逻辑,什么是inline显示?

如图,所以先要理清楚逻辑,这里是
一个网站 -> 对多个关键词,这样的关系,所以就是一对多的关系,先创建两个模型 Sites,和Keywords,其中把Keywords ForeignKey 到Sites中 ( 一个词对一个站 ),这样模型就算创建好

在adminx.py文件中的设置

添加一个inline的类

from xadmin.layout import Fieldset
class KeywordsInline():
model = Keywords
extra = 0 #默认是否显示
style = 'table'
form_layout = (
Fieldset("常规设置",


VIEW POST

View more
web开发

Django xadmin导入excel 插件

By
on
2020年4月28日

Django xadmin 制作插件的方法

编写excel.py放在项目中,代码如下

文件目录在 xadmin/plugins/excel.py

# -*- coding: utf-8 -*-
import xadmin
from xadmin.views import BaseAdminPlugin, ListAdminView
from django.template import loader
from xadmin.plugins.utils import get_context_dict

#excel 导入
class ListImportExcelPlugin(BaseAdminPlugin):
import_excel = False
# 入口函数, 通过此属性来指定此字段是否加载此字段

def init_request(self, *args, **kwargs):
return bool(self.import_excel)


VIEW POST

View more
未分类

SEO站群的底层逻辑,以及目前市面上主流的应用方式

By
on
2020年4月24日

站群是在解决什么问题?
1. 匹配更多的页面
做SEO,核心就是搜索需求覆盖,其实说简单一点,就是你要把用户能搜的词给全部做了,或是可能会做的词,潜在的词,全做了….

如果你用心整理词库,你会发现,你需要做的词特别多,操作过竞价的人就知道,少则几百个词,多则几千个词..

而关键词是布局在页面中的,所以,如果有这么多的词,就需要布局到对应的页面中,可能一个页面,可以操作几百个词,但是一个页面,操作几千个词,确实有难度…

当然也是可以做到… 比如一个页面中,把很多词给匹配到了,也可能在搜索的时候出现这个页面… ( 具体去脑补 )

 

但是如果从搜索点击率来看,无疑标题有布局到的词,在百度的搜索结果中会有飘红,不管是操作难度,还是点击率,都会比标题匹配不到,效果会好很多!

那么基于这个目的,很简单,就需要有很多的页面来操作这些词…. 因为一个标题的长度有限 ( 推荐在32个字左右 ),在32个字不管你怎么组合怎么匹配,都会有局限…

特别是很多长尾词….

所以,搞SEO的人,永远离不开一个话题,就是造页面! 市面上的聚合,采集,伪原创,AI原创,文章组合,其实都是搞页面,搞页面的形式不局限于发文章,当然发文章因为比较主流,是因为确实很简单,而且很有效! ( 只要文章好 ) , 因为不需要太多的技术含量

那么造页面的方式无非也就只有:

 通过一个大站,生成一批内容 ( 不局限目录,二级域名 )
通过一堆网站,生成一批内容 ( 这就是站群 )

那么既然,两种方式都能达到目标,为什么不直接搞一个站,这样不是更省成本?维护更方便? 这就涉及到站群解决的第二个问题
2. 分散风险 ( 时间成本等 )

你全部集中在一个大站,这个大站万一被降权了怎么办? 这一出现,少则数个月,多则永不翻身!,站群就完全相反,有一种野火烧不尽春风吹又生的感觉,…..
全部集中大站,操作时间成本太高,大站要积累权重,内页开始不会有非常好的排名 ( 除非刷,或是特别牛的老站拿来改,特别牛的老站就不说了,这玩意也不是人人都有 )
相反,站群操作的时间成本更低,因为懂seo都知道,相同条件下操作网站 : 首页 > 内页 ( 这个无需争论 ) 自然利用了这个原理,就很容易在短时间操作

怎么做站群
目前市面上主流的站群解决方案,主要有三种,我把这三种方案简单的说一下
1. 基于第三方CMS的站群系统 ( 小白可用 )
目前第三方CMS有DEDE,WP,帝国等CMS,那么这些站群系统,就可以基于这些第三方CMS上做一个维护层的管理! 简单来说,就是不涉及到CMS的功能,但是做的是CMS的维护!!这类的站群软件,本质上不是真正的站群软件,而是维护软件

比如最早的虫虫,就只是涉及发布…….


VIEW POST

View more
未分类

Django在迁移数据的时候遇到的坑

By
on
2020年4月19日

这次在弄一个django,发现坑不少….特别是在迁移数据的时候,总之就一句话

千万不要为了方便一开始用sqlite,要不然在迁移的过程中会让你怀疑人生…

我比较推荐的做法是,删除app下的 migrations 文件夹
然后运行 python manage.py makemigrations –empty {app名称}
接着 python manage.py migrate
然后用navicat逐个去同步…

当然如果都是sql的话,同步数据会更简单

如果有问题可以试着用这个来排除错误内容 ( 可以在python manage.py shell ) 下会更方便


VIEW POST

View more
WP代码碎片知识

给WordPress添加百度自动推送

By
on
2020年4月14日
介绍如何使用百度官方的站长连接提交工具


VIEW POST

View more
WP代码碎片知识

给WordPress设置后台中文前台英文的方法

By
on
2020年4月12日

这个主要是针对需要做多语言网站的人用,WordPress有一个针对不同用户显示不同语言的方法,具体如下

先在后台设置里面改把WP改成英文的然后在用里面,针对你当前登录的用户,直接修改成中文的

这样就可以实现,后台是中文界面,前台是任意多语言网站 ( 如果你的模板是多语言版本的,就有必要这样处理 ,如果在前端设计的时候就处理好的东西,那么这个就不需要做了 )


VIEW POST

View more
WP代码碎片知识

WordPress-REST API 操作数据

By
on
2020年4月11日

这里小踩了一下坑,因为自己没有好好看教程,首先,需要先下载一个插件 :

https://github.com/WP-API/Basic-Auth

可以直接下载zip,然后上传上去,直接激活就可以了,剩下的看python代码

这不得不说简单的一逼…..,甚至都可以用这些api来操作数据库了….直接用wp做成数据管理平台岂不是强大

厦门体检