怎么用python代码获取公众号文章?这个方法可能有效!

获取公众号有一定阅读量的文章存在一定的难度和风险,因为微信公众号并没有直接提供获取文章阅读量的官方API。不过,有一些非官方的方法可以尝试,但请注意这些方法可能违反微信的使用协议,存在账号被封禁等风险,本方法请不要轻易尝试,避免出现法律风险。

方法一:利用微信公众号后台接口

  1. 注册并登录微信公众号:首先需要注册并登录微信公众号,这是获取数据的前提。

  2. 抓取请求:通过开发者工具抓取微信公众号后台的请求,找到获取文章列表的接口。例如,可以使用以下代码来模拟请求:

    Python复制

    import requests
    import json
    
    url = "https://mp.weixin.qq.com/cgi-bin/appmsgpublish"
    cookies = {
        'appmsglist_action_3078708053': 'card'
        # 其他cookie信息,请直接从浏览器里复制
    }
    headers = {
        'accept': '*/*',
        'accept-language': 'zh-CN,zh;q=0.9',
        'cache-control': 'no-cache',
        'pragma': 'no-cache',
        'priority': 'u=1, i',
        'sec-ch-ua': '"Chromium";v="124", "Brave";v="124", "Not-A.Brand";v="99"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"macOS"',
        'sec-fetch-dest': 'empty',
        'sec-fetch-mode': 'cors',
        'sec-fetch-site': 'same-origin',
        'sec-gpc': '1',
        'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
        'x-requested-with': 'XMLHttpRequest',
    }
    params = {
        'sub': 'list',
        'search_field': 'null',
        'begin': '0',
        'count': '15',  # 采集条数
        'query': '',
        'fakeid': 'MjM5NTAwMjAyMA==',
        'type': '101_1',
        'free_publish_type': '1',
        'sub_action': 'list_ex',
        'token': 'token值',  # token值
        'lang': 'zh_CN',
        'f': 'json',
        'ajax': '1',
    }
    response = requests.get(url, params=params, cookies=cookies)
    resultStr = response.json()
    publish_page = resultStr.get('publish_page')
    articleList = json.loads(publish_page)
    for article in articleList.get("publish_list"):
        publish_info = json.loads(article.get("publish_info"))
        title = publish_info['appmsgex'][0]['title']
        link = publish_info['appmsgex'][0]['link']
        print(title, link)
    
  3. 获取文章详细信息:通过抓取微信客户端打开文章时的请求,获取文章的阅读量、点赞数等详细信息。可以使用以下代码:

    Python复制

    import requests
    
    def getMoreInfo(link):
        # 获得mid,_biz,idx,sn 这几个在link中的信息。
        mid = link.split("&")[1].split("=")[1]
        idx = link.split("&")[2].split("=")[1]
        sn = link.split("&")[3].split("=")[1]
        _biz = link.split("&")[0].split("_biz=")[1]
    
        # 构造请求获取文章详细信息
        url = f"https://mp.weixin.qq.com/mp/getappmsgext?__biz={_biz}&mid={mid}&idx={idx}&sn={sn}"
        headers = {
            # 这里是你自己的headers
        }
        cookies = {
            # 这里是你自己的cookies
        }
        response = requests.get(url, headers=headers, cookies=cookies)
        data = response.json()
        read_num = data["appmsgstat"]["read_num"]
        like_num = data["appmsgstat"]["like_num"]
        print(read_num, like_num)
    
    # 示例链接
    link = "http://mp.weixin.qq.com/s?__biz=MjM5Nzc5OTcxNA==&mid=2651014142&idx=1&sn=5f00452e553dad1f0621ca82b1a674bd&chksm=bd2391b38a5418a5dbcdeacbd738289fc8c421c7f0b125b97be21f65463b87d12d1c9ce75436#rd"
    getMoreInfo(link)
    

方法二:使用第三方工具

有一些第三方工具或服务可以帮助获取公众号文章的阅读量,但这些工具的可靠性和合法性需要自行评估。

注意事项

  • 法律风险:上述方法可能违反微信的使用协议,存在账号被封禁等风险。
  • 数据准确性:通过非官方方法获取的数据可能存在不准确或不完整的情况。
  • 频率限制:频繁请求可能会导致IP被封禁,建议合理控制请求频率。

如果你有合法的数据获取需求,建议通过微信官方接口或与公众号运营方合作获取数据。这里要提示一些有特别想法的朋友,请不要触犯任何法律法规相关行为,以上发布技术代码仅供参考学习使用。

你可能感兴趣的:(python,开发语言)