为go-cqhttp的使用写的文字转图片功能。但是又考虑到网页链接要OCR识别十分麻烦,所以单独抓取url以文字输出。
在实际操作的过程中遇到了一些问题。因为rss抓取的字符串中,经常会包含换行符\n,导致图片错位。

我个人推断是因为我为了美观,所以在设置line_height时,加入了额外的间距,但\n只会根据字体默认间距换行,导致排版错误。最简单的解决办法就是用re.sub去除字符串中的所有\n,只是会影响分段。想要保留分段,就要在字符串分行的部分中,识别\n,用lines.append分行并跳过\n的写入。但是在for循环中print(word)检验时发现,无论是re.sub('\\n','\\\n',text)还是re.sub('\\n','\\\\n',text),都会被识别为换行符。没有办法,找了个生僻字替换,希望有人能给出正规的解决办法。

# coding=UTF8
import re
import time
import base64
from PIL import Image, ImageFont, ImageDraw#字体设置
fontSize = 28
fontPath = r"C:\Windows\Fonts\simhei.ttf"
font = ImageFont.truetype(fontPath, fontSize)#字符串分行
text = rss_str
lines = []
line = u''
text = re.sub('\\n', '骉', text)
for word in text:if word == '骉':lines.append(line)line = u''continueif font.getsize(line + word)[0] >= 480:lines.append(line)line = u''line += wordelse:line = line + word
lines.append(line)#画布设置
line_height = (font.getsize(text)[1]) + 15
img_height = line_height * (len(lines) + 1)
im = Image.new("RGB", (540, line_height * (len(lines) + 1)), (255, 255, 255))#在画布上写字
dr = ImageDraw.Draw(im)
x, y = 30, 30
for line in lines:dr.text((x, y), line, font=font, fill="#696969")y += line_height
timeline = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
im.save("E:\RSS\%s.JPEG" % timeline, 'JPEG', subsampling=0, quality=100)#将图片转换为base64并包装为go-cqhttp的图片输出格式
with open("E:\RSS\%s.JPEG" % timeline,"rb") as f:img_data = f.read()base64_data = base64.b64encode(img_data)base64_str = str(base64_data, "utf-8")base_str = 'base64://' + base64_strcq_img ='[CQ:image,file=' + base_str + ',cache=1]'input_info = cq_img#抓取url,这是我在网上找到的一个正则,暴力但是非常有效,比一些package还好
URL_REGEX = r"""(?i)\b((?:https?:(?:/{1,3}|[a-z0-9%])|[a-z0-9.\-]+[.](?:com|net|org|edu|gov|mil|aero|asia|biz|cat|coop|info|int|jobs|mobi|museum|name|post|pro|tel|travel|xxx|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|dd|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|Ja|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)/)(?:[^\s()<>{}\[\]]+|\([^\s()]*?\([^\s()]+\)[^\s()]*?\)|\([^\s]+?\))+(?:\([^\s()]*?\([^\s()]+\)[^\s()]*?\)|\([^\s]+?\)|[^\s`!()\[\]{};:\'\".,<>?«»“”‘’])|(?:(?<!@)[a-z0-9]+(?:[.\-][a-z0-9]+)*[.](?:com|net|org|edu|gov|mil|aero|asia|biz|cat|coop|info|int|jobs|mobi|museum|name|post|pro|tel|travel|xxx|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|dd|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|Ja|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)\b/?(?!@)))"""urls = re.findall(URL_REGEX,rss_str)
for url in urls:input_info = input_info + '\n' + url

最后根据需求选择怎么把代码部分包装成函数就行。

[Python] RSS 文字转图片并单独抓取url以文字输出相关推荐

  1. Python爬虫实践(入门篇)——抓取《天使降临到我身边》图片

    今天就学了一下Python爬虫,于是想实践一下.刚好一周前在B站补完番<天使降临到我身边>--里面的小学生特可爱.情节也不错,心里就比较喜欢这部漫画,所以就想扒一些图片当壁纸.刚好,Pyt ...

  2. python实现食品推荐_通过Python语言实现美团美食商家数据抓取

    首先,我们先来打开美团美食商家页面,来分析一下. 如上面所提供的URL即为美团美食商家页面.或者我们通过美团官网打开一个美团美食商家页面,打开步骤如下:1.打开浏览器,输入 即可打开美团北京首页 2. ...

  3. Python网络爬虫,pyautogui与pytesseract抓取新浪微博数据,OCR

    Python网络爬虫,pyautogui与pytesseract抓取新浪微博数据,OCR方案 用ocr与pyautogui,以及webbrowser实现功能:设计爬虫抓取新浪微博数据,比如,抓取微博用 ...

  4. Python爬虫 | 斗图网表情包抓取

    Python爬虫 | 斗图网表情包抓取 1.数据来源分析 2.制作div_list 3.发起请求 4.保存图片 5.批量获取 6.完整代码 声明 1.数据来源分析   打开斗图吧的主页,发现网址非常有 ...

  5. Python之 - 使用Scrapy建立一个网站抓取器,网站爬取Scrapy爬虫教程

    Scrapy是一个用于爬行网站以及在数据挖掘.信息处理和历史档案等大量应用范围内抽取结构化数据的应用程序框架,广泛用于工业. 在本文中我们将建立一个从Hacker News爬取数据的爬虫,并将数据按我 ...

  6. Python,网络爬虫selenium与pyautogui抓取新浪微博用户数据

    Python,网络爬虫selenium与pyautogui抓取新浪微博用户数据 不需要登陆新浪微博账户,直接运行就可以通过python爬虫爬取新浪微博用户数据.本例selenium与pyautogui ...

  7. python爬取app播放的视频,Python爬虫工程师必学——App数据抓取实战视频教程

    爬虫分为几大方向,WEB网页数据抓取.APP数据抓取.软件系统数据抓取.本课程主要为同学讲解如何用python实现App数据抓取,课程从开发环境搭建,App爬虫必备利器详解,项目实战,到最后的多App ...

  8. python爬虫学习基础教程,批量抓取美女图片!

    python的抓取功能其实是非常强大的,当然不能浪费,呵呵.下面就与大家分享一个python写的美女图自动抓取程序吧! 其中用到urllib2模块和正则表达式模块.下面直接上代码: 用python批量 ...

  9. python淘宝爬虫_简单的抓取淘宝图片的Python爬虫

    写了一个抓taobao图片的爬虫,全是用if,for,while写的,比较简陋,入门作品. 从网页http://mm.taobao.com/json/request_top_list.htm?type ...

最新文章

  1. Python 之父:救救中国程序员
  2. SSM项目使用GoEasy 实现web消息推送服务
  3. Python 新浪微博 各种表情使用频率
  4. java查询数据库的方式_Java连接各种数据库方式速查表
  5. 有限自动机的构造与识别
  6. 如何使用易媒助手对文章进行原创检测
  7. 《高大上的PPT设计秘笈》笔记
  8. 【USACO】 录制唱片
  9. Linux:Linux下进程间通信方式的学习
  10. RT-Thread使用DP83640 实现IEEE1588 协议笔记
  11. 前端性能优化之优化图片
  12. 疑似STM32CAN进入bus off 模式
  13. Rosbag提取特定话题、改变话题名称及改变话题的Frame_id
  14. 论BTC恐惧贪婪指数在基于有限价值平均策略的量化定投中的应用
  15. 北京晚报:谷歌中国访问量陡增
  16. python3.0 中文手册
  17. 在技​​术团队中做出复杂的决定
  18. Redis导致Linux服务器中病毒、成肉鸡了。
  19. 漫谈测试员系列:无BUG不生活
  20. ArcGIS10.8按属性选择中根据关键字like模糊查询方法总结

热门文章

  1. 支付宝支付(沙箱环境)
  2. 华为OD机试 - 士兵过河
  3. ios safari 模拟器_web测试-ios设备模拟器(iOS Simulator)
  4. 安装Ubuntu的时候屏幕太小看不到下一步,点不到继续按钮
  5. python已知两条直角边求斜边,Python实现“已知三角形两个直角边,求斜边”
  6. java实现mysql拦截_java分页拦截类实现sql自动分页
  7. 以计件积分为纽带-探索客户中心团队再造模式
  8. Unity实用功能之读写Excel表格
  9. js+html 实现关系拓扑图
  10. 点亮科技树——锂离子电池