- A+
dedecms post的方式有两种:一种是使用接口,另一种是使用cookie的方式(抓包)。今天我们要学习的就是使用cookie的方式来开发织梦CMS的自动发文工具。
东尧在文章最后将织梦cms POST工具的源码下载链接分享出来了,大家可以关注我的公众号(陈东尧)回复关键词“织梦自动发文工具”获取下载密码,后期我也将在公众号上更新各类python开发的工具源码,都会开放给大家下载,希望能够对大家的工作有帮助。
首先我们登录dede后台:“127.0.0.1/dede文件夹/dede”回车就可以进入登录界面了。
使用谷歌浏览器进入后台后ctrl+shift+i 调出抓包工具查看接口(需要勾选上“Preserve log”选项)。在后台点击“核心”-----“我发布的文档”-----“添加文档”,输入标题、正文、栏目等内容,单击“保存”,就可以在右边的抓包工具中看到相关内容。可以看到,这里的发送方式是POST,下边的“Request Payload”这里提供了表单信息,包括了我们的标题、正文内容等等。
将表单内容复制到notepad++中进行处理,先把不用的部分通过正则匹配来去掉:
------.*:去除掉第一行
Content-Disposition: form-data; name=:去除掉表单字段名之前的内容。
"\r\n\r\n------": :将剩下的表单信息排版为键值对的格式
^\r\n :去掉空行。剩下的就是表单字段名和其对应的值。将得到的内容存入data_from变量中,方便后面使用。
接下来我们就到pycharm里面写爬虫程序了。首先我们在开发者工具里面找到cookie和Request URL,存入到变量headers和query中。
- headers = {
- 'Cookie':'menuitems=1_1%2C2_1%2C3_1; PHPSESSID=sg8a5cjfiu6r3pca2134e4lrv2; DedeUserID=1; DedeUserID__ckMd5=0b9a3790bccf288a; '
- 'DedeLoginTime=1526696290; DedeLoginTime__ckMd5=4fe1421ee2ff0bde; _csrf_name_d47ec03b=f05b64b0d0a525132b5451d0b18705ad; '
- '_csrf_name_d47ec03b__ckMd5=f74474ebcf9bc78b; lastCid=1; lastCid__ckMd5=0b9a3790bccf288a; ENV_GOBACK_URL=%2Fdedecms%2Fdede'
- '%2Fcontent_list.php%3Fchannelid%3D1%26cid%3D1'
- }
- query = 'http://127.0.0.1/dedecms/dede/article_add.php'
接下来我们将网页的内容打印出来看看,发现文章链接在“查看文章”对应的链接中,所以我们对这部分内容进行提取url,并进行url补全的操作:
- # urlencode方法将字典编码,用于提交数据给url
- data = urllib.parse.urlencode(data_from).encode(encoding='utf-8')
- # 只要填入了data参数就会变成post请求
- req = urllib.request.Request(query,data=data,headers=headers)
- res = urllib.request.urlopen(req,timeout=30)
- result = res.read().decode('utf-8')
- # 提取文章url
- arturl = re.search(r'''<a href='(/dedecms/plus/view.php\?aid=\d+)' target='_blank'>''',result)
- if arturl:
- arturl = urllib.parse.urljoin(query,arturl.group(1))
- else:
- arturl = ''
- print('发布失败')
- print(arturl)
因为我们之前用短文学网散文抓取工具得到的800多篇文章都存在duanwenxue.txt文件中,并且标题和正文是用“####”分开的,所以我们可以利用for循环和字符串切割的方式将每篇文章的标题和正文分别提取出来。这里由于文章数量较多,东尧就用前10篇文章作为测试:
- content_list = [line.strip() for line in open('duanwenxue.txt')]
- for wz in content_list[:10]:
- text = wz.split('####')
- title = text[0]
- content = text[1]
最后全部的10篇文章都发布成功了,发布结果如下:
织梦Cookie方式的POST其实还比较简单,接下来的课程中东尧将分享使用接口POST的方法,织梦cms、PHPcms、帝国cms都适用。自动发文系统可以说是SEOer必备的工具之一,掌握后不仅可以提高工作效率,还可以分享出去帮助到其他SEO同行。
东尧已经将本文涉及到的源代码放在了百度网盘中:
立即下载源代码:https://pan.baidu.com/s/1o_n-pBEko6-9V3MgYLEd_w
获取网盘密码方法:关注我的公众号(陈东尧)回复关键词“织梦自动发文工具”即可获得下载密码。
【帝国CMS自动发文】python开发帝国CMS自动发文工具:接口版
【织梦自动发文】python开发dedeCMS自动发文工具:接口版本
2018年5月25日 下午7:39 沙发
已下载织梦的还没用