26,092
社区成员




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小时,请问有没有什么不封号的方法?
用aip接口
可能还是太快啦,不介意时长的话用selenium试一下