上市公司的微信公众号,现在已经成为官网之外最重要的官方信息发布渠道。有些不会在股票公告中发布的消息,也会在微信公众号进行发布。所以,跟踪持仓股票的公众号信息,非常重要。
下面,以贝特瑞的官方公众号“贝特瑞新材料”为例,来说明如何利用ChatGPT 来爬取公司的公众号内容。
首先,要登陆微信公众号平台。可参照之前的文章《零代码编程:用ChatGPT自动登陆微信公众号后台》
然后点击:图文信息
点击超链接,选择其他公众号:
输入贝特瑞新材料,就可以看到公众号的全部历史文章了:
按F12键,可以看到贝特瑞新材料历史文章的源代码:
历史文章总共有46页:
第1页URL:https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin=0&count=5&fakeid=MzI0NjY5MjYyMg==&type=9&query=&token=1796751509&lang=zh_CN&f=json&ajax=1
第2页URL:https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin=5&count=5&fakeid=MzI0NjY5MjYyMg==&type=9&query=&token=1796751509&lang=zh_CN&f=json&ajax=1
第46页URL:
https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin=225&count=5&fakeid=MzI0NjY5MjYyMg==&type=9&query=&token=1796751509&lang=zh_CN&f=json&ajax=1
参数begin表示开始的位置索引,从0开始计数,每页递增5。例如,第1页的begin=0,第2页的begin=5,第46页的begin=225。
参数count表示每页的数量,固定为5。每页显示5条数据。
参数fakeid表示公众号的唯一标识,固定不变。
参数type表示文章的类型,这里固定为9。
参数query表示搜索关键词,这里为空。
参数token表示访问令牌,这个经常会变,在network-payload中获取:
参数lang表示语言,这里为中文。
参数f表示返回结果的格式,这里固定为json。
参数ajax表示是否使用Ajax加载,这里为1表示使用Ajax加载。
综上,URL中的begin参数和fakeid参数是根据页数和公众号的唯一标识来确定的,其他参数基本固定。我们可以根据这些规律生成不同页数的URL。
可以在ChatGPT中输入提示词了:
写一段Python代码,用selenium实现自动登陆微信公众平台然后爬取数据的任务,具体步骤如下:
用webdriver打开chrome浏览器;
打开https://mp.weixin.qq.com/
定位xpath=//*[@id="header"]/div[2]/div/div/div[2]/a的a元素,点击;
定位type="text" 的input元素,输入:你的账号;
定位type="password"的input元素,输入:你的密码;
定位xpath=//*[@id="header"]/div[2]/div/div/div[1]/form/div[3]/label的lable元素,选中;
定位class="btn_login"的a元素,点击;
延迟30秒;
打开微信公众号每页的URL:
https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin={0}&count=5&fakeid=MzI0NjY5MjYyMg==&type=9&query=&token={1871}&lang=zh_CN&f=json&ajax=1,参数begin的数值从0开始计数,每页递增5,一直到225;
参数token的值为:你的token,
每页URL的User-Agent为:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
Cookie为:你的cookie
获取每页的响应内容,解析json数据,打印输出;
提取其中"app_msg_list"的全部json数据,打印输出;
然后提取"app_msg_list"其中的 "link"、"title"字段,保存到F盘的“贝特瑞新材料公众号.xlsx”;
注意:每一步都输出信息
使用显式等待来等待元素的出现;
每爬取1页内容后,暂停10秒;
程序运行后,显示的json数据:
保存到Excel表格中的微信公众号URL和标题:
随机打开一个微信文章URL,显示正常: