python 企业微信群机器人_企业微信群机器人应用:使用python从网站抓取行业资讯并定时推送...
在企业经营过程中,及时了解行业相关信息(市场动态、竞品策略、行业数据等等)是非常必要的。通常情况下,商品部门、营销部门、市场部门可能都会安排专门的人员定期进行这些信息的搜集、整理,再进行内部的分享。
不过在大数据时代,利用技术手段爬取互联网中的海量数据,再进行筛选分析,提取有用的信息已经是非常常用的手段,但是爬虫技术毕竟还是有点门槛的,好在现在有python这样的胶水语言。利用python+企业微信机器人就可以很简单地实现从目标网站抓取行业资讯,并定时自动推送到内部企业微信群内进行共享,起到相关人员都能够及时了解相同的行业资讯的作用,一定程度上也有利于消除企业内部的信息孤岛。
具体的实现的流程如下:
下面是我从化妆品资讯网站抓取资讯,并通过企业微信群机器人进行群推送的例子,仅供参考(案例虽然简单,但是也涉及到了http请求、html处理、webhook接口调用等相关知识,其实也算是个小小的爬虫了吧,哈哈)。
首先我们打开要抓取信息的页面,对于页面结构进行一个简单的分析,主要是为了后面对请求回来的信息好进行提取。
如图所示,我要抓取的是资讯列表和链接地址,这个部分是包含在一个
标签当中的,其中每一个列表项定都有class = "left_news"这个属性:
,再下一层标签中,我们看到在每一个div中都有一个
疫情下的韩国经济喜忧参半,免税业务大受打击,奢侈品销售出现反弹
标签。
我要抓取的信息其实在这相标签中就已经全部都有了,那么这个就是我要抓取的页面内容的目标了。
抓取信息的代码实现就用现在超流行的python(各种实用函数库都有,直接拿来用),由于是从网页抓取信息,并进行提取,这里用到requests,bs4(BeautifulSoup)两个库,最终代码如下:
# 从化妆品资讯网查询新闻列表
# 通过调用企业微信机器接口推送到群里
# 先引入功能库
import requests
import bs4
# 自定义一个请求函数,参数是网址\请求头\请求参数,没有参数就空着,请求成功后返回页面的新闻列表
def catchnewslist(newsurl, headers, params):
urllist = []
titlelist = []
resultlist = []
response = requests.get(newsurl, headers=headers)
if response.status_code == 200:
print("请求成功!")
response.encoding = 'utf-8'
content = bs4.BeautifulSoup(response.text, 'html.parser')
elements = content.select("#content h1 a") # 这一句就是提取请求到的页面内容中要提取的新闻,根据不同的页面结构进行修改
for element in elements: # 把取到的新闻列表数据存到一个python列表中,方便后面使用
urllist.append("http://www.cosmetic-news.net/" + element.get('href'))
titlelist.append(element.string)
resultlist = [[a, b] for a, b in zip(urllist, titlelist)] # 把标题和地址组合成一个嵌套列表,并返回
else:
print(response.status_code)
print("请求失败!")
return resultlist
# 定义一个向企业微个webhook地址post数据的函数,参数为地址和数据,这里post的是md5格式的字符串
def postmsg(url, post_data):
post_data = '{"msgtype":"markdown","markdown":{"content":"%s"}}' % post_data
# print(post_data)
if url == '':
print('url is blank')
else:
r = requests.post(url, data=post_data.encode())
rstr = r.json()
if r.status_code == 200 and 'error' not in rstr:
result = 'success!'
return result
else:
return 'Error'
# 主函数
if __name__ == '__main__':
newsurl = "http://www.cosmetic-news.net/newx-4.html"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36"}
# params = {"datatype":"jsonp", "page":"1", "callback":"flightHandler"} 参数视需求添加
newslist = catchnewslist(newsurl, headers, '')
# print(newslist)
# 把请求回来的数据,按照要post到接口的md的格式再处理一下
newslistdata = u"### 近期行业资讯: \n"
for i in newslist:
# print("[%s](%s)" % (i[1], i[0]))
newslistdata = newslistdata + "%s [%s](%s)" % (newslist.index(i) + 1, i[1], i[0]) + "\n"
print(newslistdata)
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=********-****-****-****-**********" # 要post的群机器人的webhook地址
# post_data = '[这是一个链接](http://work.weixin.qq.com/api/doc)' # 带链接的md字符串格式
result = postmsg(url, newslistdata) # 调用post,向webhook发送数据
print(result)
补充说明一下,request请求头的写法,就是代码中:headers={“******”}
这一句,大括号中的内容可以从浏览器=》开发者工具=》Network=》Headers=》Request Headers 中直接复制过来,如下图所示:
以上代码运行环境为python3.8,运行结果如下:
最后,我们只需要把这段代码部署为任务计划,就可以定时抓取网页信息,并自动推送到群了,掌握了这个方法,还可以进行很多的扩展。
对于计划任务的设置,之前的文章中已经写过,可以参考下面这一篇:赵旭臻:python提取数据库数据并实现企业微信机器人定时消息推送zhuanlan.zhihu.com
python 企业微信群机器人_企业微信群机器人应用:使用python从网站抓取行业资讯并定时推送...相关推荐
- div区域内容抓取_企业微信群机器人应用:使用python从网站抓取行业资讯并定时推送...
在企业经营过程中,及时了解行业相关信息(市场动态.竞品策略.行业数据等等)是非常必要的.通常情况下,商品部门.营销部门.市场部门可能都会安排专门的人员定期进行这些信息的搜集.整理,再进行内部的分享. ...
- python企业微信群聊_企业微信、钉钉群消息python机器人自动推送
钉钉具体的接口配置文档:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq 企业微信的接口配置文档,目前在应用内部添加机器人时能够查看,还没有提供 ...
- 通过XXL-JOB定时推送bug信息到企业微信群1
通过XXL-JOB定时推送bug信息到企业微信群. 效果图 前提: 公司的Bug平台可以提供接口返回给你bug数据. 一.在企业微信群创建机器人 1.群右键创建机器人 2.拿到对应webhook. 二 ...
- 通过GitHub Actions给微信公众测试号和钉钉群定时推送消息(Python)
通过GitHub Actions给微信公众测试号和钉钉群定时推送消息(Python) https://github.com/QInzhengk/Math-Model-and-Machine-Learn ...
- 开发案例---微信定时推送:生日祝福
此功能分两部分,第一部分定时器每天定点推送一条URL+图片+文字,第二部分点击URL进入页面,能看到生日祝福文字.背景图片.音乐. 第一部分定时器每天定点推送一条URL+图片+文字 Applicati ...
- python123空气质量提醒_用Python实现给女朋友定时推送消息
释放双眼,带上耳机,听听看~! Python微信机器人定时推送消息给自己女朋友,可以选择在每天的5点20分为你的女朋友发送当日的天气,每日一句还有日历. 如果你有多个女朋友的话,还可以创建一个列表,之 ...
- 微信早安,利用uniCloud阿里云的云函数实现定时推送
最近比较火的微信早安,看了一下小红书 @猪咪不是猪的教程,也动手做了一下,并做了一下实现定时的优化与符合我自己需求的修改.由于本人并不很熟悉python,所以部分修改是基于教程源码做修改的,在此也感谢 ...
- 微信小程序云开发定时推送订阅消息
微信小程序云开发定时推送订阅消息 1.找到自己想要的模板 (1)点击订阅消息 (2)点击公共模板库,然后找到想要选用的模板,点击选用. (3)在我的模板里面,复制模板id. 如果找不到想要用的模板,可 ...
- 微信早安定时推送 简单方法教程(windows通用)
无需计算机基础,跟着教程无脑学! 如果你还没做出这样的效果 请参考往期文章(必能学会): https://blog.csdn.net/A_Xunla/article/details/126521400 ...
最新文章
- Linux文件操作实用笔记
- 大牛手把手教你!2021Java最新大厂面试真题
- 在采用vue-cli Post Get
- 为什么WordPress网站应尽量避免使用过多插件
- 2017.9.8 线性代数 失败总结
- 《像程序员一样思考》
- python 函数积累
- python实例 输出你好
- 光立方实现3D贪吃蛇
- GTASA圣安地列斯 DirectX 2.0 ENB 下窗口化运行的解决办法
- iOS-OC-修改微信运动步数(读取和修改健康步数HealthKit)
- 网络编程 :System.Net概述(1)
- 家庭局域网_局域网IP不止192.168 了解这些实用又安全
- 简单粗暴理解【阿姆达尔定律】
- 微信公众号怎么申请注册?看这一篇就够了
- DDR2(SDRAM)初始化 28个步骤总结
- c语言移动光标到指定坐标,C语言实现光标移动
- welsh-powell
- pycharm新建项目环境设置详解
- 怎么查看自己的电脑是几位操作系统?
热门文章
- kafka可视化客户端工具(Kafka Tool)的使用
- 如何开启和使用windows 10中的Hyper-v
- Redis积分排行榜设计与实现第二篇
- bzoj 4031 [HEOI2015]小Z的房间
- [Linux 使用(2)] 64位Linux下安装jboss-as-7.1 以及jdk1.7
- 常见MyEclipse报错—— serialVersionUID的作用
- Java基础——构造代码块
- Android Kernel Features
- 使用GUID作为数据库主键与INT作为主键的性能测试
- Transformers与图神经网络的关系,我们能从transformer学习到什么?