目标:把CSV写入到织梦CMS文章,达到批量上传的效果
进度:基本达成目标,但还是有些小问题没有解决
存在的疑问:
- 分隔符的处理为什么有点乱
- 函数还是用得不熟
还没解决的技术性问题:
- 文字的转码问题
- 能不能直接写入数据库里
- 分隔符的处理
- 插入分隔符或者其他补充内容
下一步目标:
微博ajax的读取写入
关于CMS的写入找了很久,最后找到了一个post的方法,
整体来说就是利用cookie加上post的方式把数据提交,因为不擅长数据库,所以就用表单
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
'''
dede POST脚本
cookie版本
'''
import urllib.request
import re
import urllib.parse
import urllib
import time
import random
import csv
# 将后台网页的Cookie值存入变量headers中
headers = {
'Cookie':'menuitems=1_1%2C2_1%2C3_1; BDTUJIAID=288f7238a71a322ef4a4b423f908581b; DedeUserID=1; Hm_lvt_52a10ee2c283866113dba4f3e15e276f=1537414986,1537577384,1537607838,1537868894; CookieZJWFANGDAOLIAN=111.29.146.30#2018-09-26-08#lugugo.com; PHPSESSID=il3l9b3698d4lv5lsiesd1gma7; DedeUserID__ckMd5=03a50c5a27e19a14; DedeLoginTime=1537924336; DedeLoginTime__ckMd5=4e9259145d980921; ENV_GOBACK_URL=%2Fdede%2Fcontent_list.php%3Fchannelid%3D1; lastCid=5; lastCid__ckMd5=aa09a148aac352f4'
}
def post(title,tags,source,content,typeid=8):
# 网站后台的开发者工具中拿到的请求链接
query = 'http://lugugo.com/dede/article_add.php'
# 将得到的表单存入data_from中,并对其进行整理:
# 非数字的需要添加''整理为字符串;结尾需要添加',',去掉一些不用的键值对
data_from = {
"username": "admin",
"channelid": 1, # 频道ID
"dopost": 'save',
"title": title, # 文章标题
"shorttitle": '',
"redirecturl": '',
"tags": tags, # tag词
"weight": 0,
"picname": source,# 缩略图?
"source": 'www.lugugo.com',
"writer": '鹿谷网',
"typeid":typeid, # 后台的栏目ID
"typeid2": '',
"keywords":tags, # 关键词
"autokey": 1,
"description": title, # 描述
"dede_addonfields": '',
"remote": 0,
"autolitpic": 1,
"needwatermark": 1,
"sptype": 'hand',
"spsize": 5,
"body": content, # 正文内容
"voteid": '',
"notpost": 0,
"click": random.randint(100,999), # 点击次数:随机生成
"sortup": 0,
"color": '',
"arcrank": 0,
"money": 0,
# 发布时间,time方法获取本地时间
"pubdate": time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()),
"ishtml": 0,
"filename": '',
"templet": '',
"imageField.x": 34,
"imageField.y": 8,
}
# urlencode方法将字典编码,用于提交数据给url
data = urllib.parse.urlencode(data_from).encode(encoding='iso-8859-10')
s = str(data)
sb = urllib.parse.unquote(s)
sk = sb.encode('gb2312')
# 只要填入了data参数就会变成post请求
req = urllib.request.Request(query,data=sk,headers=headers)
res = urllib.request.urlopen(req,timeout=30)
result = res.read().decode('ISO-8859-1')
# 提取文章url
arturl = re.search(r'''<a href='(/dedecms/plus/view.php\?aid=\d+)' target='_blank'>''',result)