如何优雅的将微信推文自动拷贝成CSDN博文?
为什么要批量将微信推文转成CSDN博文?
在原来运维了三年的推文公众号TSINGHUAJOKING中, 总共包含了近一千篇原创推文。除了实时性很强的交互推文之外,还有大量的技术相关的推文。今天准备将原来在自己的微信公众号里的相关技术推文转移到CSDN中的博文。
但是发现手工转换效率太低了。如果使用富文本方式编辑,就会看到一些图片格式对齐以及文本编辑比较麻烦。如果使用Markdown编辑器,更可气的连图片链接都无法一次性的粘贴。只能分别粘贴文字和图片。粘贴过来的GIF(动图)还都是静态的图片。
最终还是求助于万能的PYTHON的网页爬取功能,通过简短的编程,将原来微信推文的信息自动拷贝到MARKDOWN编辑器中形成推文。
~
~
所使用的PYTHON工具包
使用python中request, lxml.etree, bs4.BeautifulSoup这三个软件包。
使用requests获得微信推文网页所对应的HTML的文本信息。
html = requests.get('%s'%htmlstr)
上面代码中的htmlstr是通过python命令行参数串入微信推文的URL地址。
使用BeautifulSoup对html进行解析,其中解析工具使用了快速轻量级的lxml解析器。
soup = BeautifulSoup(html.text 'lxml')
通过Chrome浏览器中的工具,查看微信推文网页中的结构信息,分别寻找得到推文的题目、内容所在的结构。
推文的题目在head 段,通过如下代码获得TITLE字符串,并存储的量titlestring中。
titlestring = ''content = soup.find('head')for c in content:if c.name == 'meta':if 'property' in c.attrs:if c.attrs['property'] == 'twitter:title':titlestring = c.attrs['content']printf(titlestring)
通过CHROME的右上角的三条横杠中菜单“更多工具”-“开发者”查找网页中各部分内容所在的HTML结构框架
推文的主要内容在 “rich_media_content” 中,对于其中的每一部分分别处理其中的普通的字符、被加重的字符、图片链接等信息。
content = soup.find('div', class_='rich_media_content')if content != None:## processing the content lines.
具体处理方式可以参见后面完整的PYTHON程序。
将相应的信息转换成Markdown格式,然后通过往CSDN的Markdown编辑器发送Windows剪切板粘贴命令,将处理之后的推文内容逐一粘贴到Markdown编辑器中;这部分可以是借助于TEASOFT软件提供的功能,这就使得编程大大简化了。
使用csdntitle='写文章-CSDN博客’来寻找Markdown编辑器所在的窗口。将需要粘贴的内容首先拷贝到Windows剪切板,然后在往csdn发送相应的粘贴快捷键:ctrl-v。具体代码如下:
#------------------------------------------------------------
csdntitle = '写文章-CSDN博客'
#------------------------------------------------------------
def csdnpasteclipboard():tspsendwindowkey(csdntitle, 'v', control=1)def csdndelete():tspsendwindowkey(csdntitle, 'a', control=1)tspsendwindowkey(csdntitle, '%c'%M1_DELETE, vk=1)def csdnpaste(str):clipboard.copy(str)csdnpasteclipboard()
自动转帖PYTHON程序
下面是程序的完整版本。
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TRANSFER.PY -- by Dr. ZhuoQing 2020-02-01
#
# Note:
#============================================================from headm import *
import requests, json, time
from lxml import etree
from bs4 import BeautifulSoup#------------------------------------------------------------
csdntitle = '写文章-CSDN博客'
#------------------------------------------------------------
def csdnpasteclipboard():tspsendwindowkey(csdntitle, 'v', control=1)def csdndelete():tspsendwindowkey(csdntitle, 'a', control=1)tspsendwindowkey(csdntitle, '%c'%M1_DELETE, vk=1)def csdnpaste(str):clipboard.copy(str)csdnpasteclipboard()#============================================================if __name__ == "__main__":csdndelete()#--------------------------------------------------------htmlstr = ''if len(sys.argv) <= 1:htmlstr = clipboard.paste()else: htmlstr = sys.argv[1]if len(htmlstr) == 0:printf('\aUsage: mp2csdn url')exit()#--------------------------------------------------------html = requests.get('%s'%htmlstr)soup = BeautifulSoup(html.text, 'lxml')#--------------------------------------------------------titlestring = ''content = soup.find('head')for c in content:if c.name == 'meta':if 'property' in c.attrs:if c.attrs['property'] == 'twitter:title':titlestring = c.attrs['content']printf(titlestring)# exit()#--------------------------------------------------------content = soup.find('div', class_='rich_media_content')if content != None:count = 0for c in content:try:for i in c:if i.name == 'span':insertstring = i.stringif i.attrs['style'].find('14px') >= 0:insertstring = '^%s^'%i.string + '\r\n\r\n'if i.attrs['style'] == 'font-size: 20px;' or\i.attrs['style'] == 'font-size: 18px;':insertstring = '**%s**'%i.stringcsdnpaste(insertstring)continueif i.name == 'strong':csdnpaste(i.string)if i.name == None:csdnpaste(i + '\r\n\r\n')if i.name == 'img':csdnpaste("![image](%s#pic_center)"%i.attrs['data-src'] + '\r\n\r\n')except:continuecount = count + 1else:printf('Content is none.')#--------------------------------------------------------if len(titlestring) > 0: clipboard.copy(titlestring)# csdnpastetitle(titlestring)#--------------------------------------------------------printf('\a')#------------------------------------------------------------
# END OF FILE : TRANSFER.PY
#============================================================
如何优雅的将微信推文自动拷贝成CSDN博文?相关推荐
- 图片抓取_小小爬虫批量抓取微信推文里的图片
哈喽,大家好,今天给大家分享一个特别特别小的爬虫案例! 爬取微信推文中的图片!!!! 有人说,这有啥用,,,,万一人家推文是放的是以图片的方式放的某个PPT的内容呢,你想把它弄下来,咋整,就是爬取啦. ...
- 爬虫取中间文本_小小爬虫批量抓取微信推文里的图片
哈喽,大家好,今天给大家分享一个特别特别小的爬虫案例! 爬取微信推文中的图片!!!! 有人说,这有啥用,,,,万一人家推文是放的是以图片的方式放的某个PPT的内容呢,你想把它弄下来,咋整,就是爬取啦. ...
- bootstrap上传图片可实现查看上一张图片和下一张图片_如何实现像人民日报微信推文一样的的点亮效果?...
如何实现向人民日报微信推文一样的的点亮效果? 有两种方法: 方法一:就是使用代码在编辑器进行编辑emmmmmm这个方法贼麻烦,需要调至HTML模式-- 方法二:在现有编辑器模板下利用SVG动画进行编辑 ...
- 英语四级计算机二级的微信推文,简明·实用 | 瞬间高大上的微信公众号推文制作...
新媒体的盛行,微信逐渐变成了越来越主流的社交工具.微信公众号涉及服务号,企业号与订阅号.优秀的订阅号遍及各个领域,在越来越多人的关注之下成就了财富,荣耀与标杆.那么如何制作优秀的推文?如何制作漂亮的排 ...
- 微信推文图片间距有缝的代码_使用记录接缝进行旧代码单元测试
微信推文图片间距有缝的代码 在大多数情况下,使用遗留代码可能很困难. 但是,当涉及到添加新功能,重构或维护您不熟悉的代码时,它可能会变得势不可挡. 如果您已经使用敏捷技术几年了,并且突然间您面对大量的 ...
- 微信推文属性的关联分析 by Apriori算法
本文通过Apriori算法来对某公司的微信推文属性的关联分析. 本文的目的 找出可让 ['阅读量超过1K'] 的因素,以便达到这些因素使微信推文阅读量提升. 本文的结论 若想让微信推文阅读量超过1K, ...
- centos7+TP5.1+selenium+chrome抓取搜狗微信推文
centos7+TP5.1+selenium+chrome抓取搜狗微信推文 一.Composer 引入 "require": {"php-webdriver/webdri ...
- 微信推文无缝滚动是这样炼成的
来源 | 般若无界 作者 | 舒欣 效果展示 前两天我收到策划妹子的请求,需要在微信公众号里面做一篇推文.这个推文和以往不同,需要有两张图片无缝拼接,并且下方图片可以滚动的效果. 这个效果目前用微信自 ...
- 获取微信推文的实际链接地址(包含JSON数据以及推文msg_data_id)
前提: 现在随着公众平台的要求越来越多,搜狗微信的爬虫难度越来越高,很多爬虫都没有用了,但是现在很多业务还是要用到历史推文的一些数据,其实很多数据(阅读量.点赞数.封面图片地址.标题.简介)都可以用过 ...
最新文章
- 如何启用计算机上的无线网络连接,告诉大家win10无线网络连接如何打开
- 如果中国要做自己的GPT-3,一定离不开这家公司的算力
- Java实用教程笔记 组件及事件处理
- php 删除指定html标签,总结php删除html标签和标签内的内容的方法
- 2021-01-20 Python编程特殊小技巧汇集
- 好的PPT——准备工作
- 【开发者成长】“机器学习还是很难用!”
- 找出数组的最大公约数
- 网络流24题(更新中
- spring5.0学习笔记1
- Google亲儿子 Nexus/Pixel 手机刷机Root之旅
- 如何快速裁剪pdf中的页面
- 集成32位/64位:Office 2010简体中文专业增强版下载+最新密钥
- Gos ——操作键盘
- 在本地写一个以市净率为因子的回测结果
- windows bat脚本教程
- 使用Excel数据分析工具进行多元回归分析
- 从0开始学Logisim,计算机硬件系统设计(1)
- 【Hive】内置函数—日期函数
- Python 29 描述符