Python爬虫结合dedecms自动采集发布

之前想实现一个爬虫,实时采集别人的文章,根据自己的规则去修改采集到的文章,然后自动发布。决定用dedecms做新闻发布,还可以自动生成html,自动把远程图片本地化等一些优点,为了安全,完全可以把前后台分离。
起初想用scrapy爬虫框架去实现,觉得定制开发的话用scrapy只能用到里面的一些基础的功能,有一些情况要跟着框架的规则走,如果自己写的话可以自己写规则去处理,也有优点爬虫、处理器等,最后还是自己写了一个demo。
首先分析需求,python做爬虫,dedecms做发布,起初先考虑了发布功能,实现了模拟登陆,或者研究dedecms的数据库设计,直接写到数据库,实际中没有这样去做,开始做模拟登陆的时候,需要改dedecms的代码去掉验证码,不然还要实现验证码识别,这个完全没有必要,因为要发布的是自己的网站,自己也有账户、密码、发布文章权限,然后就改了下dedecms的登陆功能,加了一个登陆接口,分析了dedecms的发布文章HTTP数据包。这块搞定了后就开始设计爬虫了,最后设计的感觉和scrapy的一些基础的处理机制很像。

做dedecms的登陆接口如下:
后台目录下的config.php 34行找到

/**
//检验用户登录状态
$cuserLogin = new userLogin();
if($cuserLogin->getUserID()==-1)
{
header(“location:login.php?gotopage=”.urlencode($dedeNowurl));
exit();
}
**/

改为下面
//http://127.0.0.2/dede/index.php?username=admin&password=admin

$cuserLogin = new userLogin();
if($cuserLogin->getUserID()==-1) {
if($_REQUEST['username'] != ''){
$res = $cuserLogin->checkUser($_REQUEST['username'], $_REQUEST['password']);
if($res==1) $cuserLogin->keepUser();
}

if($cuserLogin->getUserID()==-1) {
header("location:login.php?gotopage=".urlencode($dedeNowurl));
exit();
}
}

这样只要请求:http://127.0.0.2/dede/index.php?username=admin&password=admin 就可以得到一个sessionid,只要用这个sessionid去发布文章就可以了。

发布文章的HTTP数据包如下:
#http://127.0.0.2/dede/article_add.php
POST /dede/article_add.php HTTP/1.1
Host: 127.0.0.2
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://127.0.0.2/dede/article_add.php?cid=2
Cookie: menuitems=1_1%2C2_1%2C3_1; CNZZDATA1254901833=1497342033-1472891946-%7C1473171059; Hm_lvt_a6454d60bf94f1e40b22b89e9f2986ba=1472892122; ENV_GOBACK_URL=%2Fmd5%2Fcontent_list.php%3Farcrank%3D-1%26cid%3D11; lastCid=11; lastCid__ckMd5=2f82387a2b251324; DedeUserID=1; DedeUserID__ckMd5=74be9ff370c4536f; DedeLoginTime=1473174404; DedeLoginTime__ckMd5=b8edc1b5318a3923; hasshown=1; Hm_lpvt_a6454d60bf94f1e40b22b89e9f2986ba=1473173893; PHPSESSID=m2o3k882tln0ttdi964v5aorn6
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=—————————2802133914041
Content-Length: 3639
—————————–2802133914041
Content-Disposition: form-data; name=”channelid”

1
—————————–2802133914041
Content-Disposition: form-data; name=”dopost”

save
—————————–2802133914041
Content-Disposition: form-data; name=”title”

2222222222
—————————–2802133914041
Content-Disposition: form-data; name=”shorttitle”

—————————–2802133914041
Content-Disposition: form-data; name=”redirecturl”

—————————–2802133914041
Content-Disposition: form-data; name=”tags”

—————————–2802133914041
Content-Disposition: form-data; name=”weight”

100
—————————–2802133914041
Content-Disposition: form-data; name=”picname”

—————————–2802133914041
Content-Disposition: form-data; name=”litpic”; filename=””
Content-Type: application/octet-stream

—————————–2802133914041
Content-Disposition: form-data; name=”source”

—————————–2802133914041
Content-Disposition: form-data; name=”writer”

—————————–2802133914041
Content-Disposition: form-data; name=”typeid”

2
—————————–2802133914041
Content-Disposition: form-data; name=”typeid2″

—————————–2802133914041
Content-Disposition: form-data; name=”keywords”

—————————–2802133914041
Content-Disposition: form-data; name=”autokey”

1
—————————–2802133914041
Content-Disposition: form-data; name=”description”

—————————–2802133914041
Content-Disposition: form-data; name=”dede_addonfields”

—————————–2802133914041
Content-Disposition: form-data; name=”remote”

1
—————————–2802133914041
Content-Disposition: form-data; name=”autolitpic”

1
—————————–2802133914041
Content-Disposition: form-data; name=”needwatermark”

1
—————————–2802133914041
Content-Disposition: form-data; name=”sptype”

hand
—————————–2802133914041
Content-Disposition: form-data; name=”spsize”

5
—————————–2802133914041
Content-Disposition: form-data; name=”body”

2222222222
—————————–2802133914041
Content-Disposition: form-data; name=”voteid”

—————————–2802133914041
Content-Disposition: form-data; name=”notpost”

0
—————————–2802133914041
Content-Disposition: form-data; name=”click”

70
—————————–2802133914041
Content-Disposition: form-data; name=”sortup”

0
—————————–2802133914041
Content-Disposition: form-data; name=”color”

—————————–2802133914041
Content-Disposition: form-data; name=”arcrank”

0
—————————–2802133914041
Content-Disposition: form-data; name=”money”

0
—————————–2802133914041
Content-Disposition: form-data; name=”pubdate”

2016-09-06 23:07:52
—————————–2802133914041
Content-Disposition: form-data; name=”ishtml”

1
—————————–2802133914041
Content-Disposition: form-data; name=”filename”

—————————–2802133914041
Content-Disposition: form-data; name=”templet”

—————————–2802133914041
Content-Disposition: form-data; name=”imageField.x”

41
—————————–2802133914041
Content-Disposition: form-data; name=”imageField.y”

6
—————————–2802133914041–
#更新生成html请求
http://127.0.0.2/dede/task_do.php?typeid=2&aid=109&dopost=makeprenext&nextdo=

GET /dede/task_do.php?typeid=2&aid=109&dopost=makeprenext&nextdo= HTTP/1.1
Host: 127.0.0.2
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://127.0.0.2/dede/article_add.php
Cookie: menuitems=1_1%2C2_1%2C3_1; CNZZDATA1254901833=1497342033-1472891946-%7C1473171059; Hm_lvt_a6454d60bf94f1e40b22b89e9f2986ba=1472892122; ENV_GOBACK_URL=%2Fmd5%2Fcontent_list.php%3Farcrank%3D-1%26cid%3D11; lastCid=11; lastCid__ckMd5=2f82387a2b251324; DedeUserID=1; DedeUserID__ckMd5=74be9ff370c4536f; DedeLoginTime=1473174404; DedeLoginTime__ckMd5=b8edc1b5318a3923; hasshown=1; Hm_lpvt_a6454d60bf94f1e40b22b89e9f2986ba=1473173893; PHPSESSID=m2o3k882tln0ttdi964v5aorn6
Connection: keep-alive
Upgrade-Insecure-Requests: 1

通过上面数据包可以分析到如下结果:
POST http://127.0.0.2/dede/article_add.php
需要配置的参数:

channelid:1 #普通文章提交
dopost:save #提交方式

shorttitle:” #短标题
autokey:1 #自动获取关键词
remote:1 #不指定缩略图,远程自动获取缩略图
autolitpic:1 #提取第一个图片为缩略图
sptype:auto #自动分页
spsize:5 #5k大小自动分页
notpost:1 #禁止评论
sortup:0 #文章排序、默认
arcrank:0 #阅读权限为开放浏览
money: #消费金币0
ishtml:1 #生成html

title:”文章标题” #文章标题
source:”文章来源” #文章来源
writer:”文章作者” #文章作者
typeid:”主栏目ID2″ #主栏目ID
body:”文章内容” #文章内容
click:”文章点击量” #文章点击量
pubdate:”提交时间” #提交时间

然后开始模拟dedecms发布文章测试了,python代码如下:

#!/usr/bin/python
#coding:utf8
import requests,random,time

#访问登陆接口保持cookies
sid = requests.session()
login_url = "http://127.0.0.2/dede/index.php?username=admin&password=admin"
header = {    "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
"Referer"    :"http://127.0.0.2"
}

#登陆接口获取Cookies
loadcookies = sid.get(url = login_url,headers = header)

#进入增加文章页面
#get_html = sid.get('http://127.0.0.2/dede/article_add.php?channelid=1',headers = header)
#print get_html.content

#定义固定字段
article = {
'channelid':1, #普通文章提交
'dopost':'save', #提交方式
'shorttitle':'', #短标题
'autokey':1, #自动获取关键词
'remote':1, #不指定缩略图,远程自动获取缩略图
'autolitpic':1, #提取第一个图片为缩略图
'sptype':'auto', #自动分页
'spsize':5, #5k大小自动分页
'notpost':1, #禁止评论
'sortup':0, #文章排序、默认
'arcrank':0, #阅读权限为开放浏览
'money': 0,#消费金币0
'ishtml':1, #生成html
'click':random.randint(10, 300), #随机生成文章点击量
'pubdate':time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), #s生成当前提交时间
}

#定义可变字段
article['source'] = "文章来源" #文章来源
article['writer'] = "文章作者" #文章作者
article['typeid'] = "2" #主栏目ID

#定义提交文章请求URL
article_request = "http://127.0.0.2/dede/article_add.php"

"""
#测试提交数据
article['title'] = "测试_文章标题" #文章标题
article['body'] = "测试_文章内容" #文章内容
#提交后会自动重定向 生成html,http返回状态为200则成功!
res = sid.post(url = article_request,data = article, headers = header)
print res
"""
for i in range(50):
    article['title'] = str(i) + "_文章标题" #文章标题
    article['body'] = str(i) + "_文章内容" #文章内容
    #print article
    res = sid.post(url = article_request,data = article, headers = header)
    print res

其次就是分析爬虫需求阶段了,如下:

收集采集页面:

http://www.tunvan.com/col.jsp?id=115
http://www.zhongkerd.com/news.html
http://www.qianxx.com/news/field/
http://www.ifenguo.com/news/xingyexinwen/
http://www.ifenguo.com/news/gongsixinwen/

每一个采集页面和要改的规则都不一样,发布文章的栏目可能也有变化,要写多个爬虫,一个爬虫实现不了这个功能,要有爬虫、处理器、配置文件、函数文件(避免重复写代码)、数据库文件。

数据库里面主要是保存文章url和标题,主要是判断这篇文章是否是更新的,如果已经采集发布了就不要重复发布了,如果不存在文章就是最新的文章,需要写入数据库并发布文章。数据库就一个表几个字段就好,采用的sqlite3,数据库文件db.dll建表如下:

CREATE TABLE history (
id    INTEGER         PRIMARY KEY ASC AUTOINCREMENT,
url   VARCHAR( 100 ),
title TEXT,
date  DATETIME        DEFAULT ( ( datetime( 'now', 'localtime' )  )  )
);

架构设计如下:

│ db.dll #sqlite数据库
│ dede.py #测试dede登陆接口
│ function.py #公共函数
│ run.py #爬虫集开始函数
│ settings.py #爬虫配置设置
│ spiders.py #爬虫示例
│ sqlitestudio-2.1.5.exe #sqlite数据库编辑工具
│ __init__.py #前置方法供模块用

dede.py如下:

#!/usr/bin/python
#coding:utf8
import requests,random,time
import lxml

#定义域名
domain = "http://127.0.0.2/"
admin_dir = "dede/"
houtai = domain + admin_dir
username = "admin"
password = "admin"

#访问登陆接口保持cookies
sid = requests.session()
login_url = houtai + "index.php?username=" + username + "&password=" + password
header = {    "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
"Referer"    : domain
}

#登陆接口获取Cookies
loadcookies = sid.get(url = login_url,headers = header)

#定义固定字段
article = {
'channelid':1, #普通文章提交
'dopost':'save', #提交方式
'shorttitle':'', #短标题
'autokey':1, #自动获取关键词
'remote':1, #不指定缩略图,远程自动获取缩略图
'autolitpic':1, #提取第一个图片为缩略图
'sptype':'auto', #自动分页
'spsize':5, #5k大小自动分页
'notpost':1, #禁止评论
'sortup':0, #文章排序、默认
'arcrank':0, #阅读权限为开放浏览
'money': 0,#消费金币0
'ishtml':1, #生成html
'click':random.randint(10, 300), #随机生成文章点击量
'pubdate':time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), #s生成当前提交时间
}

#定义可变字段
article['source'] = "文章来源" #文章来源
article['writer'] = "文章作者" #文章作者
article['typeid'] = "2" #主栏目ID

#定义提交文章请求URL
article_request = houtai + "article_add.php"

"""
#测试提交数据
article['title'] = "11测试_文章标题" #文章标题
article['body'] = "11测试_文章内容" #文章内容
#提交后会自动重定向 生成html,http返回状态为200则成功!
res = sid.post(url = article_request,data = article, headers = header)
print res
"""

"""
for i in range(50):
    article['title'] = str(i) + "_文章标题" #文章标题
    article['body'] = str(i) + "_文章内容" #文章内容
    #print article
    res = sid.post(url = article_request,data = article, headers = header)
    print res
"""

function.py如下:

# coding:utf-8
from settings import *

#检查数据库中是否存在文章,0为不存在,1为存在
def res_check(article):
    exec_select = "SELECT count(*) FROM history WHERE url = '%s' AND title = '%s' "
    res_check = cur.execute(exec_select % (article[0],article[1]))
    for res in res_check:
        result = res[0]
    return result

#写入数据库操作
def res_insert(article):
    exec_insert = "INSERT INTO history (url,title) VALUES ('%s','%s')"
    cur.execute(exec_insert % (article[0],article[1]))
    conn.commit()

#模拟登陆发布文章
def send_article(title,body,typeid = "2"):
    article['title'] = title #文章标题
    article['body'] = body #文章内容
    article['typeid'] = "2"
    #print article
    #提交后会自动重定向 生成html,http返回状态为200则成功!
    res = sid.post(url = article_request,data = article, headers = header)
    #print res
    if res.status_code == 200 :
        #print u"send mail!"
        send_mail(title = title,body = body)
        print u"success article send!"
    else:
        #发布文章失败处理
        pass

#发邮件通知send_mail(收件,标题,内容)
def send_mail(title,body):
    shoujian = "admin@0535code.com"
    # 设置服务器,用户名、密码以及邮箱的后缀
    mail_user = "610358898"
    mail_pass="你的邮箱密码"
    mail_postfix="qq.com"
    me=mail_user+"<"+mail_user+"@"+mail_postfix+">"
    msg = MIMEText(body, 'html', 'utf-8')
    msg['Subject'] = title
    #msg['to'] = shoujian
    try:
        mail = smtplib.SMTP()
        mail.connect("smtp.qq.com")#配置SMTP服务器
        mail.login(mail_user,mail_pass)
        mail.sendmail(me,shoujian, msg.as_string())
        mail.close()
        print u"send mail success!"
    except Exception, e:
        print str(e)
        print u"send mail exit!"

run.py如下:

# -*- coding: utf-8 -*-
import spiders
    #开始第一个爬虫
    spiders.start()

settings.py如下:

# coding:utf-8
import re,sys,os,requests,lxml,string,time,random,logging
from bs4 import BeautifulSoup
from lxml import etree
import smtplib
from email.mime.text import MIMEText
import sqlite3
import HTMLParser

#刷新系统
reload(sys)
sys.setdefaultencoding( "utf-8" )
#定义当前时间
#now = time.strftime( '%Y-%m-%d %X',time.localtime())

#设置头信息
headers={       "User-Agent":"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36",
"Accept":"*/*",
"Accept-Language":"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
"Accept-Encoding":"gzip, deflate",
"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
"Connection":"keep-alive",
"X-Requested-With":"XMLHttpRequest",
}
domain = u"<a href='http://010bjsoft.com'>北京软件外包</a>".decode("string_escape") #要替换的超链接
html_parser = HTMLParser.HTMLParser() #生成转义器

########################################################dede参数配置

#定义域名
domain = "http://127.0.0.2/"
admin_dir = "dede/"
houtai = domain + admin_dir
username = "admin"
password = "admin"

#访问登陆接口保持cookies
sid = requests.session()
login_url = houtai + "index.php?username=" + username + "&password=" + password
header = {    "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
"Referer"    : domain
}

#登陆接口获取Cookies
loadcookies = sid.get(url = login_url,headers = header)

#定义固定字段
article = {
'channelid':1, #普通文章提交
'dopost':'save', #提交方式
'shorttitle':'', #短标题
'autokey':1, #自动获取关键词
'remote':1, #不指定缩略图,远程自动获取缩略图
'autolitpic':1, #提取第一个图片为缩略图
'sptype':'auto', #自动分页
'spsize':5, #5k大小自动分页
'notpost':1, #禁止评论
'sortup':0, #文章排序、默认
'arcrank':0, #阅读权限为开放浏览
'money': 0,#消费金币0
'ishtml':1, #生成html
'click':random.randint(10, 300), #随机生成文章点击量
'pubdate':time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), #s生成当前提交时间
}

#定义可变字段
article['source'] = "文章来源" #文章来源
article['writer'] = "文章作者" #文章作者

#定义提交文章请求URL
article_request = houtai + "article_add.php"

########################################################数据库配置

#建立数据库连接
conn = sqlite3.connect("db.dll")
#创建游标
cur = conn.cursor()

spiders.py如下:

# coding:utf-8
from settings import *
from function import *

#获取内容, 文章url,文章内容xpath表达式
def get_content( url = "http://www.zhongkerd.com/news/content-1389.html" , xpath_rule = "//html/body/div[3]/div/div[2]/div/div[2]/div/div[1]/div/div/dl/dd" ):
    html = requests.get(url,headers = headers).content
    tree = etree.HTML(html)
    res = tree .xpath(xpath_rule)[0]
    res_content = etree.tostring(res) #转为字符串
    res_content = html_parser.unescape(res_content) #转为html编码 输出
    res_content = res_content.replace('\t','').replace('\n','') #去除空格 .replace(' ',''),换行符,制表符
    return res_content
#获取结果,url列表
def get_article_list(url = "http://www.zhongkerd.com/news.html" ):
    body_html = requests.get(url,headers = headers).content
    #print body_html
    soup = BeautifulSoup(body_html,'lxml')
    page_div = soup.find_all(name = "a",href = re.compile("content"),class_="w-bloglist-entry-link")
    #print page_div
    list_url = []
    for a in page_div:
        #print a
        #print a.get('href')
        #print a.string
        list_url.append((a.get('href'),a.string))
        #print get_content(a.get('href'))
    else:
        #print list_url
        return list_url
#处理采集页面
def res_content(url):
    content = get_content(url)
    #print content
    info = re.findall(r'<dd>(.*?)</dd>',content,re.S)[0] #去掉dd标签

    re_zhushi = re.compile(r'<!--[^>]*-->') #HTML注释
    re_href = re.compile(r'<\s*a[^>]*>[^<](.*?)*<\s*/\s*a\s*>') #去出超链接,替换
    re_js = re.compile(r'<\s*script[^>]*>[^<](.*?)*<\s*/\s*script\s*>') #去出 javascript
    re_copyright = re.compile(r'<p\s*align="left">(.*?)</p>') #去出 版权信息 #r'<p\s*align="left">' 注意处理换行要

    info = re_zhushi.sub('',info,re.S)
    info = re_href.sub(domain,info,re.S)
    #print content
    #exit()
    info = re_copyright.sub(u"",info,re.S)
    info = info.replace(u'\xa0', u' ') #防止gbk转btf输出错误
    #print info
    return info

#处理结果
def caiji_result():
    article_list = get_article_list()
    #print article_list
    #判断是否数据库中是否有,是否写入数据库
    for article in article_list:
        #print res_check(article)
        #判断是否需要写入
        if not res_check(article):
            #print "no" #u"不存在需要写入"
            res_insert(article)
            #写入后需要发布文章
            body = res_content(article[0])
            send_article(title = article[1],body = body)
        else:
            #print "yes" #u"已经存在不需要写入"
            pass
#爬虫调用函数
def start():
    caiji_result()

__init__.py用于发布模块时用。

写完了、是不是发现和scrapy基础功能有点像呢。。。

网络营销课程培训笔记

1.单月过百个关键词在各大搜索引擎首页有排名不是没有可能;
2.百度推广误删,无备份,教你无损数据恢复;
3.百度稳定排名1年以上,无需操心,独门技巧;
4.百度推广三步走,SEO三步走;
5.SEO关键词怎么选择才会有流量;
6.SEO行业以后会有什么改革性的变化?搜索引擎未来几年会有什么改革?
7.教你怎么管理Seoer团队;
8.搜索引擎命令 语法讲解;
9.百度分析算法分析及讲解;
10.各大搜索引擎 推广盈利模式及站长盈利模式;
11.百度知道升级后,怎么回答才会被选中为推荐答案? 漏洞和规则在那里?
12.不做任何推广一周上百度首页? 解析301定向。
13.0元创造一个公司不是没有可能?
14.怎么分析一个行业适合做SEO还是竞价?

2015装修互联网哪些事儿

3年前一次偶然的机会进入了装修行业,帮助了自己,也帮助了客户公司有了突飞猛进的业务量。记得12年的时候实在是不易,各种尝试,客户说没有效果,各种测试,客户说咨询客户质量度太低,客户为什么要选择我们做网络营销,肯定要比自己做的好才有必要,为了留住客户,几个通宵,各种方法各种用,最后终于找到突破口,提升了转化率,降低了成本。在2012年的时候装修行业做到50元一个客户很正常,甚至还要低也是有可能的,而且要保证客户质量。唉,小公司要客户,大公司要数据,小公司要效果营销,大公司要效果营销+品牌营销,最终还是做到客户满意了,一直合作到今年。
首先对装修2012年到2015年的sem数据做个对比,2012年50元左右一个客户,2013年150左右一个客户,2014年300元左右一个客户,2015年在500-800元一个客户,sem的成本在成倍的提高,在2013年的时候,很多装修公司做不起sem,感觉sem效果不好,其实是自己没有经验没有玩好,在2014年是动真格了,会玩的装修公司也不见得玩的好,2014年已经有一批装修网倒下了,2015年很多不知名的装修网又走了一批,剩下的装修网也未必活的很好,一个比较明显的数据可以证明,在2013年的时候,装修网都是安排三家装修公司测量,2015年很明显,装修网都安排4家或5家装修公司,因为营销成本太高,但是实际中未必会安排了4,5家装修公司,于是装修网又在想办法改变模式。通过上述的数据,当sem成本不够维持公司运营的情况下,公司会怎么办?这是很令人担心的事。
还有一条比较明显的数据,就是赶集网招标,赶集网招标页面有每天的报名信息,我关注过很多装修网的招标信息,很多装修网前台展现的都不是真实数据,赶集网的确实是真实数据,赶集网的装修招标不仅仅是一个页面,还有赶集帮帮会对客户针对性推广,赶集网的流量是没有疑问的,通过他招标页面2012,2013,2014,环比可以看出淡旺季的区别,环比看的不准确,装修网络来的客户在淡季和旺季主要是装修装修周期不同,但是同比非常明显,招标信息有成倍的变化,2013年3月与2014年3月,取出一个月的数据做对比,招标信息几乎减少了一半,是房地产影响了?还是装修网变多了影响了? 竞争是在不断增加的,我觉得这里面的因素不单在上面两方面,那并不是关键因素,关键因素是百度装修公司,百度左侧前8名都是装修网,个别知名装修公司,客户不可能在每个装修网都去报名,一个装修网安排5个装修公司去测量,在2个装修网报名就很不错了,很多客户会选择一个知名的装修平台去报名,这点土巴兔具有很大的优势。相信这也是今年3月份58助土巴兔融资C轮的原因之一,按照这种情况最后谁会活的最好?
2015年装修行业血拼,百度某同事透露,目前百度推广的商家做的比较好的很少,因为成本太高,在2013年之前,我觉得装修行业数据很值钱,那时我自己去做的话,一个月至少赚8W。对于百度推广,现在还是有客户做的不错的,一部分知名装修公司和一部分玩思路的人,现在不是玩sem技术时代了。要玩商机,玩思路,玩不好下一个消失的就是你。
目测市场上目前主要包括三种运营模式,一种是土巴兔,发单给多家装修公司,另一种是工长俱乐部,发单给工长,还有一种是装修套餐形式的,2014年兴起的,据了解这种模式很容易被客户接受。先谈第一种模式,土巴兔这种中介平台类的,互联网上有无数个,在未来的时间里,预计会有很多倒下的,会留下几个比较知名的平台,比如土巴兔,还有一些玩不大,也玩不死的装修网,比如hellzx和6装网,这样玩也可以长期下去。但是知名度与土巴兔是不在一个次元的。这种模式随着时间的推移,会不会把模式进一步升级?时间会给我们答案。 再谈工长俱乐部模式,工长俱乐部基本都是安徽工长,很多工长俱乐部的老板也是安徽的,做的比较大的有苏皖,皖南,唐亮,星秀,南方等,再加上今年3空间也加入了装修市场,工长俱乐部网站只展现工长的联系方式,而没有工长的联系电话,和每一个施工项目案例,3空间把这些都补足了。而且工长联系电话也都公开了,3空间的诞生对一些比较小的工长俱乐部有很大威胁,甚至从工长俱乐部里面挖走很多工长了,小的工长俱乐部在今年都面临倒闭或者缩小规模的状态。我觉得3空间对于大的工长俱乐部,比如唐亮,皖南等,做BTV电视广告有一定知名度的工长俱乐部未必会有很大的影响,3空间在互联网有一定的优势,包括抢工长,在互联网平台是不错的,但是知名的工长俱乐部有电视广告,来源的客户群体也是有区别的,有些客户看电视广告看到的,比较信任工长俱乐部,3空间,抢工长,网上有知名度,对于知名的工长俱乐部一时半会也不会造成很大的影响。但是对于比较小的工长俱乐部就悲剧了,最后谈下装修套餐模式的,这种模式在2014年,部分工长俱乐部就开始尝试这种方式了,发现这种方式更有利于签单,这样没有了所谓的增项的说法了,让客户更放心,但是合算起来装修套餐的价格也不低,换汤不换药的玩法,今年兴起的新平台,紫薯家装,爱空间,蓝考拉(专业做工装的套餐,跟我想到一块去了)这种模式都要自己去做装修了,都会面临一个问题,比如现在爱空间,每月只开工20家,因为自己的工人是有限的,如果看透爱空间的699元套餐,其实爱空间的价格也是不便宜的。
再看下目前互联网比较知名的装修平台吧,土巴兔,爱装网,土拨鼠,齐家网,普通的有hellzx,6装网,同样是给装修公司发单的装修网,有的在砸钱做品牌知名度,有的不用砸钱就做了品牌知名度,有的要赚钱不要品牌知名度,先看土巴兔,土巴兔是在2014年加入北京的,而且在全国各地都有,之前与深圳一个做互联网的朋友聊了会,谈到了土巴兔,他说在广东那边到处都是土巴兔的广告,线下的广告,而土巴兔在其他城市很少有线下的广告,几乎都是线上的,据土巴兔内部认识透露,土巴兔在北方做的并不是特别好,通过这个可以看到线下的力量也很大,第二个谈爱装网,为何爱装网第二个谈,因为我觉得这家公司太会玩的,把网络营销几乎玩到了极致,之前也一直想这样去做,但是没有团队,资金的支持,只能一拖再拖,直到拖到了现在,爱装网在网上树立了自己的品牌,如果说投资,爱装网的在一个城市的投资最多不超过土巴兔的十分之一,甚至到百分之一都很正常,爱装网也做了一款app了,与我理想中的app还是不一样,pc时代很难超越了,移动端还有机会,未来在移动端要不惜一切代价去做这块。而且我觉得爱装网的创意软文也是最好的,好像是12年的时候看过,惊呆了,写的太好了,看的我都想加盟了。通过外貌和数据来看,我觉得爱装网是活的最稳的,工长俱乐部目前了解星秀是活的最稳的,在打造自己品牌的同时实现盈利状态。但是在2015年爱装网也开始了安排4家装修公司的模式了,装修网太多了。这么多,为什么要找你?做sem有个高老庄装修网这点做的很不错,因为很多装修客户装修周期是比较长的,他通过建材让客户收益,同时提升了装修客户的签单量。再谈土拨鼠,土拨鼠也融到资了,以前一次机会听某人说土拨鼠做的比土巴兔早,最早是土拨鼠开始做的,查了下域名年龄,相差不大,在土巴兔加入北京后,土拨鼠也加入了北京,开始sem都很猛,直接导致sem的成本翻番,如果没有他们的加入,或者成本还会涨的慢一些,土拨鼠现在几乎不见影了,不晓得下一步是怎么打算的,齐家网在上海,上海本地也有广告,但是了解的齐家网也只是烧钱,如果说网络营销,跟爱装网还差一截,商业流量差的就远了。包括土巴兔也是。剩下的hellozx和6装网,hellozx我们单子不求多,而且我们发单费用低,6装网我们单子比普通装修网多,都是真实有效客户信息。各种装修网,各有千秋。
一起装修网,大家一起装修,但是对这家公司的印象一直是在做建材团购,一次建材团购费用在sem一天投入上万元费用,sem中有三大行业,医疗,旅游,教育,而装修行业有三大行业的特性,建材团购是引导客户的一种方式,我觉得这种方式很合理的,能保证签单量,介于目前各种方式也必须要有自己独特的优势要客户去选择的。如果按照今年兴起的装修套餐成为主流形式,大部分公司放弃施工利润,放在产品上,最终走的还是一起装修网的路。
未来装修网,工长俱乐部是否会三分天下,时间会证明一切。

APP推广市场入口总结

 
以下是收集并成功提交的APP应用市场入口,方便以后使用记载下来。
淘宝手机助手 ?http://app.taobao.com/
百度应用下载?http://as.baidu.com/
小米应用商店?http://app.xiaomi.com/
新浪应用中心?http://app.sina.com.cn/
网易应用中心?http://m.163.com/android/
搜狐应用中心?http://app.sohu.com/developer
应用宝 ?http://android.myapp.com
华为开发者联盟?http://developer.huawei.com/devunion/ui/index.html
联想乐商店?http://www.lenovomm.com/appstore/html/home.html
http://developer.lenovomm.com/developer/
Appchina应用汇?http://www.appchina.com/market/dev/index.action
木蚂蚁开发者平台?http://dev.mumayi.com/developers?联系QQ:800001832 ? ?E-mail: app@mumayi.com
历趣开发者平台?http://dev.liqucn.com/?联系QQ:68860688 ?E-mail:cshz@liqucn.com
优亿开发者面板?http://dev.eoemarket.com/
安卓开发者联盟?http://dev.anzhi.com/?联系QQ:1557667227 ? Email:developer@goapk.com
机锋开发者服务平台?http://dev.gfan.com/
安卓市场?http://dev.apk.hiapk.com/
N多市场?http://www.nduoa.com/developer/apk/index
 

关于超级图片平台运营的一些想法

关于超级图片的一些营销运营想法,在这里写下我个人的见解,超级图片主要分为专业版,广告版,可打印版,开发者。?专业版主要针对图片版权需求用户,广告版主要是网站广告联盟,在大众的广告联盟的基础上增加了推广者的运营策略,可打印版主要是o2o模式,线上与线下相结合,开发者主要是超级图片对外提供的API接口,供第三方程序调用使用接口。拥有比较前沿的图形处理技术,通过平台在线对图片做标记,让图片拥有隐形的版权。拒绝复制盗版。
一、网站概况
http://www.ichaotu.com/?首先从网站首页进入,导航是:总首页,适用行业,专业版,广告版,可打印版,开发版,服务支持,合作联系。从文字上给人的感觉不专业,从内行人角度考虑,几个栏目不是太协调,适用行业与三个版本之间不协调,从技术角度去考虑,网站页面采用了bootstrap前端开源框架,Bootstrap远不止实现目前的效果,比如导航可以通过监听实现置顶,如果前端人员有充足的时间完全可以做成响应式WEB,至少现在不是的,刚通过手机试过。后面有必要的话,可以考虑做成响应式的。
在会员注册这块,可以加入QQ,百度等第三方接口实现一件注册功能。
二、网站运营策略
在12年的时候,京东网络营销副总封华平曾自己做过广告联盟,网站名叫效果网,采用SEO+品牌营销做网站流量,没有做起来,在此我对广告联盟有自己独特的见解,通过线上推广为入口,采用独特的方式做网站流量与品牌,SEO则作为辅助去做。品牌有了,SEO顺手就搞定。
首先做病毒营销我有一个想法,就是陌生用户不论广告主,网站主,都可以有一个推广链接,通过推广链接发给别人,推荐一个用户,他就可以获得佣金。这种做法很多网站都采用过。现在效果比较一般。可以通过其他方式关联起来比较好。这个比较典型的例子,KKPW客客威客开源系统:
http://www.kppw.cn/kppw/index.php?do=prom
(移动端通过QQ空间,微信,微博转发条数可以有抽奖机会,或者转发够条数获得礼品,制定政策!)
线上推广又分为广告主与网站主,如果与病毒营销相结合的话,广告主与网站主推荐用户可以分别获得佣金,只是一个简单的思路,具体广告主与网站主的佣金计划,应该在广告主与网站主之间花掉大部分费用,剩少部分费用,甚至不剩的情况下为了增加网站的品牌效益。
谈到病毒营销,必不可少的要做事件营销,对于网站主,可以进行抽奖获得佣金,奖品等。如果1000个人注册了。200个人中奖了,(中奖率为20%)150人+?是获得的佣金,按照这个比例做事件营销是花钱买流量。可以有针对性举行事件营销。对于网站主,佣金更适合一些,对于广告主,礼品更适合一些。
三、网站推广运营
超级图片广告联盟隶属于软件技术性质网站,目前做的Discuz插件,通过QQ群共享插件是一种基本途径,然后可以通过太平洋下载中心,A5站长网,cnzz站长网等,上传各类CMS插件。
为了增加下载量,可以通过下载官网的?Discuz,dedecms,wordpress等开源CMS,在cms的基本源码上直接加上插件,并发布到第三方开源平台,让别人在下载cms使用的时候直接就可以看到插件。可以通过这种方式统计客户转化率,如果转化率低的情况下,可以通过营销手段去提高。

某电子商务学院期末考试题

学生姓名:??????????????? 分数:
上机题(100分)

1、?写一篇软文在www.admin5.com上发布并要求审核通过,并在软文中留下网址http://www.hanihan.bj.cn;(审核通过70分,不通过40分)
2、?在百度查询关于植物染发相关信息,并列出可推广关键词和描述信息;(15分)
3、?使用WORD写一个关于网站推广方面的求职信息,要求内容简洁明了,重点内容突出。(15分)

尼玛,第一到题不是老师自己接的活要学生去做么,学校太黑暗了,不如有一个自己的网站,给自己写下。都是小儿科的问题,这样怎么能提高学生的能力呢。记得1年前我出过一份面试题,比较有认可性,当时忘记留备份了,忘掉那里去了,有时间招聘这方面的人,再写一个招聘面试题,这种就是蓝雨充数呀,就不说啥了。

 

百度免费推广详细分析

百度推广是一个按效果付费的推广产品,那有没有免费的可以利用百度免费推广的产品呢,这个是有的,针对百度,北京云飞时代营销小组分析过百度搜索的几款产品,对于推广效果是非常不错的,根据搜索引擎分类,大家应该知道所谓花钱做的百度推广,他的右下角会写的”推广链接”四个字,那有没有注意到没写这四个字的呢?咱们就依次一一进行分类。
百度免费推广产品有:百度百科、百度贴吧、百度文库、百度知道等。。。
为什么说是这几款百度产品可以免费推广呢?下面来证实一下,下面搜索一下软件这个词,会看到以下图片
1
在以上图片可以看到右下角有写的百度快照的,有的却没写,写的百度快照的自然是网站,是高权重的网站,因为软件是一个热门词,有些人会注意到,有的右下角什么都没写,没写百度快照也没写推广链接,右下角是空的,通过以上图片,我们可以看到有百度百科和百度贴吧。然后在百度搜一下“北京软件外包”这个词,这是给一个客户做的。搜一下看下图:
2
看上图,前三都是我们客户的信息,第一个是我们客户的网站,我们两个月做上去的,第二个是百度文库,上面写的日期是2011.8到现在是2012.3.4到现在整整四个月时间,此关键词稳居百度首页,另外还有百度知道,也稳居首页,居首页时间大家自己计算,如果关键词可以做到这样,那与花钱做的百度推广效果比起来,相差无几了。
最后说一下,百度免费推广,需要的是用户体验技术,百度知道,你可以自己提出一个一个问题或者回答一个问题,刷下PV,超过30就会消失,我们曾经尝试过,全部要以用户为中心,那就可以做到首页去了。

百度推广关键词质量度因素分析

最近接触几个百度推广账户,发现现在关键词的质量度不是单单靠写创意,写的好就可以是三颗星了,最近在一个客户的账户中,本来都是广泛匹配的,随便写了几个创意,账户内80%的关键词都是三颗星了,之后因为客户业务的要求,广泛匹配会浪费一些钱,匹配到很多不相关的词,那我就尝试修改为短语匹配与精确匹配了,没想到这一次修改,非常失败。80%关键词都变为两颗星了,尝试继续写一些创意对 关键词优化,可是写了不少,创意的通顺度也都没什么问题,百度推广毕竟也是程序,在一个推广单元中有6个关键词,写了接近20个创意,质量度还是没变化,只有提高出价才可以在左侧出现。
经过上面的问题,我又恢复了账户为广泛匹配,关键词质量度基本恢复,然后我尝试对业务比较精准的词,进行短语匹配和广泛匹配,选了10个左右,出价在10元左右,基本都是两颗星,花了点时间去优化这几个关键词, 有一个精确匹配的变为三颗星了,那个词算是一个地域热门词,精确匹配每天也至少有3个点击的,我看了下展现量与点击量,比例是10:1,也就是说展现 10次点击1次,查看了下其他关键词的展现量与点击量,都未达到这个比例,这说明一个问题,如果短语或者精确匹配,达不到一定的比例,那凤巢系统是不会给予三颗星的,哪怕创意写的再好,广泛匹配达到了,写的创意不好,哪怕不通顺,都一样是三颗星。
经过上述分析,关键词的质量度最重要的是取决于展现量与点击量,上述我提供的比例仅供参考,百度做? 了这样的调整,以后推荐广泛匹配,因为短语和精确很难做到三颗星,那就要出价高,如果行业性有高质量关键词,点几次确保肯定会有一个客户咨询 的话适合 短语与精确匹配,否则建议广泛匹配,或者一个短语的计划一个广泛的计划,对关键词把握不准禁用精确匹配。
这是近阶段对凤巢系统关键词质量的一个总结!

百度推广打开慢解决方案

?? 百度推广为什么这么慢? 很多人都在使用百度推广发现慢了吧。为什么那么慢。下面给大家揭秘。
? ?百度推广是B/S架构的,前端程序采用C#写的,后台处理现在只晓得用了java,觉得肯定少不了C++,比如切词通顺等方面的算法,至少通过前台可以看出是 C#所写,C#是微软推出的一个最新编程语言 ,开发速度非常快,直接调用.Net库可以实现很多功能,微软封装了自己的类库,优点是开发快,缺点是程序要背着一个壳子.net库,离开了就运行不了了,百度这么大 ,居然也偷懒。使用C#也应该有他的原因,用户少的时候还可以,但是用户多了,C#程序很明显的体现出运行速度了,飞信就是一个例子,原来也是用C#写的,之后用户量增多了,发现C#极慢,然后换成C++了, 不过这与百度推广不一样,因为百度推广是B/S程序,总之百度推广WEB是比较慢了,百度然后出了一个百度助手,这个可以直接操作账户中的数据库,加快了程序速度,预计这个问题百度会处理数据负荷量问题的。百度助手只是一个暂时的缓解工具。

百度推广算法和百度自然排名算法解说

现在很多人说在研究百度的这个算法,那个算法,但是实际中几个人研究出来确定的算法了,不排除 现在不少人在研究出百度的一些经验了,但是那只能说是经验或者是规则,算法是什么,算法是实现整个程序的原理,程序运转的原理,曾经见过某程序员,想逆推百度推广的算法,当时觉得有可能, 因为在数据库设计方面是他是强项,经过一个周发现,越推越纠结。越推越复杂,到头来还是一场空。
? 那百度推广算法,百度自然排名算法是不是不能分析了?没人知道了?非也,方法是有的,不过需要能力强的人,而且是多项,或者多人分工,上面说的,如果是两个人分工,一个找经验,一个分析算法,这样的话就好一些了,但是这样也没有一个人都具有这种能力好。这种人是比较少的。会程序,不需要精通,但是要懂算法设计,要会逆推原理,另外还需要灵活使用软件,比如说现在有10个人,这10个人都有QQ,给这10个人同样一个问题,让这10个QQ添加一下我的QQ,然后 让他们通过他们的QQ查看下我的QQ升级剩余天数,这种问题一般人可能会认为怎么看呀,根本看不了,如果你去想方法了,肯定是可以做到的,在这里就可以体现出一个人玩软件的经验了,玩推广,玩算法都是一样的道理,如果这个在 10个人之中做不到的话,那用到程序上同样不会优秀,这就是程序员的悲剧了,有聪明的,有笨的,有没毅力的,啥都有,有转行的,有 混饭吃的,有寻着梦想没实现的,有混日子的。多说了,说上面那个问题,我曾经就碰到过上述问题之一,那这个真的看不了?其实可以看,用QQ软件看不了,还有其他办法,绕过普通方法去看,通过web.qq.com直接就可以看到好友的升级剩余天数了,这是腾讯之前的BUG,现在看不到了。经常研究这个,更有利于社工技术,别人给你一个密码,想猜解不到都难。如果你身边有这样的人,抓紧发挥他的长处吧。关于百度推广的算法说到此。