爬取微信公众号文章URL被封号。。。

qq_53641910 2023-09-01 14:23:47
def getArticle(cookie, agent, token, begin, biz, areaName):
    # post的url
    url = "https://mp.weixin.qq.com/cgi-bin/appmsg"
    # 设置头
    headers = {
        "Cookie": cookie,
        "User-Agent": random_agent(),
    }
    """
        注意修改yourtoken,number
        number表示从第number页开始爬取,为5的倍数,从0开始。如0、5、10……
        token可以使用Chrome自带的工具进行获取
        fakeid是公众号独一无二的一个id,等同于后面的__biz
    """
    data = {
        "token": token,
        "lang": "zh_CN",
        "f": "json",
        "ajax": "1",
        "action": "list_ex",
        "begin": begin,
        "count": "5",
        "query": "",
        "fakeid": biz,
        "type": "9",
    }
    # get进行提交
    content_json = requests.get(url, headers=headers, params=data).json()
    # 遍历数据提取有用数据-等待时间设置-注(100-120s可连续爬取16个公众号一个月的信息一次,第二次到第六个公众号左右会封号)
    time.sleep(random.uniform(120, 140))

    for item in content_json["app_msg_list"]:
        # 提取每页文章的标题及对应的url
        timeArray = datetime.fromtimestamp(int(item["update_time"]))
        print(f"开始时间:{beginDate}")
        print(f"结束时间:{stopDate}")
        print(f"当前文章时间:{timeArray}")
        if timeArray >= beginDate and timeArray <= stopDate:
            allArticle.append([areaName, item["title"], item["link"], timeArray.strftime('%Y%m%d')])
            data_one.append([areaName, item["title"], item["link"], timeArray.strftime('%Y%m%d')])
            print(f"{timeArray}满足条件")
        else:
            print(f"{timeArray}不满足条件")
            if timeArray < beginDate:
                print('不满足条件')
                print(data_one)
                if os.path.isfile(f'公众号文章信息存储/{now_day}.txt'):
                    if data_one:
                        print("正在写入")
                        with open(f'公众号文章信息存储/{now_day}.txt', 'a', encoding='utf-8') as fp:
                            for i in data_one:
                                for j in i:
                                    fp.write(j + '\t')
                                fp.write('\n')
                else:
                    print("正在创建文件夹")
                    with open(f'公众号文章信息存储/{now_day}.txt', 'w', encoding='utf-8') as fp:
                        for i in data_one:
                            for j in i:
                                fp.write(j + '\t')
                            fp.write('\n')
                print("退出循环")
                data_one.clear()
                return False
    return True

之前也用过ip代理但还是被封了24小时,请问有没有什么不封号的方法?

...全文
671 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
高质量海王哦 2024-08-05
  • 打赏
  • 举报
回复

用aip接口

One_Piece_Fu 2023-12-07
  • 打赏
  • 举报
回复 1

可能还是太快啦,不介意时长的话用selenium试一下

26,092

社区成员

发帖
与我相关
我的任务
社区描述
爬虫逆向技术交流社区,有问题可在此发布动态,不限开发语言不限框架技术的综合社区。
社区管理员
  • 考古学家lx(李玺)
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

一个综合的爬虫逆向技术交流社区

试试用AI创作助手写篇文章吧