为什么要批量将微信推文转成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博文?相关推荐

  1. 图片抓取_小小爬虫批量抓取微信推文里的图片

    哈喽,大家好,今天给大家分享一个特别特别小的爬虫案例! 爬取微信推文中的图片!!!! 有人说,这有啥用,,,,万一人家推文是放的是以图片的方式放的某个PPT的内容呢,你想把它弄下来,咋整,就是爬取啦. ...

  2. 爬虫取中间文本_小小爬虫批量抓取微信推文里的图片

    哈喽,大家好,今天给大家分享一个特别特别小的爬虫案例! 爬取微信推文中的图片!!!! 有人说,这有啥用,,,,万一人家推文是放的是以图片的方式放的某个PPT的内容呢,你想把它弄下来,咋整,就是爬取啦. ...

  3. bootstrap上传图片可实现查看上一张图片和下一张图片_如何实现像人民日报微信推文一样的的点亮效果?...

    如何实现向人民日报微信推文一样的的点亮效果? 有两种方法: 方法一:就是使用代码在编辑器进行编辑emmmmmm这个方法贼麻烦,需要调至HTML模式-- 方法二:在现有编辑器模板下利用SVG动画进行编辑 ...

  4. 英语四级计算机二级的微信推文,简明·实用 | 瞬间高大上的微信公众号推文制作...

    新媒体的盛行,微信逐渐变成了越来越主流的社交工具.微信公众号涉及服务号,企业号与订阅号.优秀的订阅号遍及各个领域,在越来越多人的关注之下成就了财富,荣耀与标杆.那么如何制作优秀的推文?如何制作漂亮的排 ...

  5. 微信推文图片间距有缝的代码_使用记录接缝进行旧代码单元测试

    微信推文图片间距有缝的代码 在大多数情况下,使用遗留代码可能很困难. 但是,当涉及到添加新功能,重构或维护您不熟悉的代码时,它可能会变得势不可挡. 如果您已经使用敏捷技术几年了,并且突然间您面对大量的 ...

  6. 微信推文属性的关联分析 by Apriori算法

    本文通过Apriori算法来对某公司的微信推文属性的关联分析. 本文的目的 找出可让 ['阅读量超过1K'] 的因素,以便达到这些因素使微信推文阅读量提升. 本文的结论 若想让微信推文阅读量超过1K, ...

  7. centos7+TP5.1+selenium+chrome抓取搜狗微信推文

    centos7+TP5.1+selenium+chrome抓取搜狗微信推文 一.Composer 引入 "require": {"php-webdriver/webdri ...

  8. 微信推文无缝滚动是这样炼成的

    来源 | 般若无界 作者 | 舒欣 效果展示 前两天我收到策划妹子的请求,需要在微信公众号里面做一篇推文.这个推文和以往不同,需要有两张图片无缝拼接,并且下方图片可以滚动的效果. 这个效果目前用微信自 ...

  9. 获取微信推文的实际链接地址(包含JSON数据以及推文msg_data_id)

    前提: 现在随着公众平台的要求越来越多,搜狗微信的爬虫难度越来越高,很多爬虫都没有用了,但是现在很多业务还是要用到历史推文的一些数据,其实很多数据(阅读量.点赞数.封面图片地址.标题.简介)都可以用过 ...

最新文章

  1. 如何启用计算机上的无线网络连接,告诉大家win10无线网络连接如何打开
  2. 如果中国要做自己的GPT-3,一定离不开这家公司的算力
  3. Java实用教程笔记 组件及事件处理
  4. php 删除指定html标签,总结php删除html标签和标签内的内容的方法
  5. 2021-01-20 Python编程特殊小技巧汇集
  6. 好的PPT——准备工作
  7. 【开发者成长】“机器学习还是很难用!”
  8. 找出数组的最大公约数
  9. 网络流24题(更新中
  10. spring5.0学习笔记1
  11. Google亲儿子 Nexus/Pixel 手机刷机Root之旅
  12. 如何快速裁剪pdf中的页面
  13. 集成32位/64位:Office 2010简体中文专业增强版下载+最新密钥
  14. Gos ——操作键盘
  15. 在本地写一个以市净率为因子的回测结果
  16. windows bat脚本教程
  17. 使用Excel数据分析工具进行多元回归分析
  18. 从0开始学Logisim,计算机硬件系统设计(1)
  19. 【Hive】内置函数—日期函数
  20. Python 29 描述符

热门文章

  1. 复选框判断是否选中(供自己参考)
  2. 《Attention Is All You Need》算法详解
  3. 【群体智能】布谷鸟搜索算法
  4. 又一个智能汽车主流标配?数字钥匙赛道「产品迎新」
  5. 工业物联网 SCA-IOT2050快速收集三菱CNC数控系统数据至OPC UA服务器
  6. 计算机应用类如何投稿,计算机类投稿须知.doc
  7. 电力系统潮流计算c加加语言指南,第三章简单电力系统的潮流计算汇总
  8. 春色迷人 | 江南风景水彩画欣赏
  9. 大咖谈交通模型的价值
  10. MySQL1【个人学习笔记】