Python微信公众号文章爬取,听说这上面很多技术大佬?

 

一.思路

我们通过网页版的微信公众平台的图文消息中的超链接获取到我们需要的接口

 

 

 

从接口中我们可以得到对应的微信公众号和对应的所有微信公众号文章。

 

二.接口分析

获取微信公众号的接口: https://mp.weixin.qq.com/cgi-bin/searchbiz? 参数: action=search_biz begin=0 count=5 query=公众号名称 token=每个账号对应的token值 lang=zh_CN f=json ajax=1 请求方式: GET 所以这个接口中我们只需要得到token即可,而query则是你需要搜索的公众号,token则可以通过登录后的网页链接获取得到。

 

获取对应公众号的文章的接口: https://mp.weixin.qq.com/cgi-bin/appmsg? 参数: action=list_ex begin=0 count=5 fakeid=MjM5NDAwMTA2MA== type=9 query= token=557131216 lang=zh_CN f=json ajax=1 请求方式: GET 在这个接口中我们需要获取的值有上一步的token以及fakeid,而这个fakeid则在第一个接口中可以获取得到。从而我们就可以拿到微信公众号文章的数据了。

 

三.实现

第一步:

首先我们需要通过selenium模拟登录,然后获取到cookie和对应的token

def weChat_login(user, password):
    post = {}
    browser = webdriver.Chrome()
    browser.get('https://mp.weixin.qq.com/')
    sleep(3)
    browser.delete_all_cookies()
    sleep(2)
    # 点击切换到账号密码输入
    browser.find_element_by_xpath("//a[@class='login__type__container__select-type']").click()
    sleep(2)
    # 模拟用户点击
    input_user = browser.find_element_by_xpath("//input[@name='account']")
    input_user.send_keys(user)
    input_password = browser.find_element_by_xpath("//input[@name='password']")
    input_password.send_keys(password)
    sleep(2)
    # 点击登录
    browser.find_element_by_xpath("//a[@class='btn_login']").click()
    sleep(2)
    # 微信登录验证
    print('请扫描二维码')
    sleep(20)
    # 刷新当前网页
    browser.get('https://mp.weixin.qq.com/')
    sleep(5)
    # 获取当前网页链接
    url = browser.current_url
    # 获取当前cookie
    cookies = browser.get_cookies()
    for item in cookies:
        post[item['name']] = item['value']
    # 转换为字符串
    cookie_str = json.dumps(post)
    # 存储到本地
    with open('cookie.txt', 'w+', encoding='utf-8') as f:
        f.write(cookie_str)
    print('cookie保存到本地成功')
    # 对当前网页链接进行切片,获取到token
    paramList = url.strip().split('?')[1].split('&')
    # 定义一个字典存储数据
    paramdict = {}
    for item in paramList:
        paramdict[item.split('=')[0]] = item.split('=')[1]
    # 返回token
    return paramdict['token']

定义了一个登录方法,里面的参数为登录的账号和密码,然后定义了一个字典用来存储cookie的值。通过模拟用户输入对应的账号密码并且点击登录,然后会出现一个扫码验证,用登录的微信去扫码即可。
刷新当前网页后,获取当前cookie以及token然后返回。

第二步:

1.请求获取对应公众号接口,取到我们需要的fakeid

    url = 'https://mp.weixin.qq.com'
    headers = {
        'HOST': 'mp.weixin.qq.com',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
    }
    with open('cookie.txt', 'r', encoding='utf-8') as f:
        cookie = f.read()
    cookies = json.loads(cookie)
    resp = requests.get(url=url, headers=headers, cookies=cookies)
    search_url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'
    params = {
        'action': 'search_biz',
        'begin': '0',
        'count': '5',
        'query': '搜索的公众号名称',
        'token': token,
        'lang': 'zh_CN',
        'f': 'json',
        'ajax': '1'
    }
    search_resp = requests.get(url=search_url, cookies=cookies, headers=headers, params=params)

将我们获取到的token和cookie传进来,然后通过requests.get请求,获得返回的微信公众号的json数据

lists = search_resp.json().get('list')[0]

通过上面的代码即可获取到对应的公众号数据

fakeid = lists.get('fakeid')

通过上面的代码就可以得到对应的fakeid

2.请求获取微信公众号文章接口,取到我们需要的文章数据

    appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
    params_data = {
        'action': 'list_ex',
        'begin': '0',
        'count': '5',
        'fakeid': fakeid,
        'type': '9',
        'query': '',
        'token': token,
        'lang': 'zh_CN',
        'f': 'json',
        'ajax': '1'
    }
    appmsg_resp = requests.get(url=appmsg_url, cookies=cookies, headers=headers, params=params_data)

我们传入fakeid和token然后还是调用requests.get请求接口,获得返回的json数据。
我们就实现了对微信公众号文章的爬取。

四.总结

通过对微信公众号文章的爬取,需要掌握selenium和requests的用法,以及如何获取到请求接口。但是需要注意的是当我们循环获取文章时,一定要设置延迟时间,不然账号很容易被封禁,从而得不到返回的数据。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

### 回答1: 可以使用Python开发微信公众号,常用的Python库包括itchat、wechatpy、wxpy等。这些库可以帮助开发者实现微信公众号的功能,例如自动回复、消息推送、菜单设置等。 其中,itchat是一个非常流行的Python库,提供了微信个人号和公众号的API,可以通过Python代码来实现微信的自动化操作。而wechatpy则是一个专门针对微信公众号Python库,支持高级接口和企业微信接口,可以方便地进行公众号开发。 wxpy则是一个基于itchat的Python库,可以快速地实现微信机器人的开发,具有良好的扩展性和定制性。通过wxpy,开发者可以轻松地实现微信自动回复、消息推送和群聊机器人等功能。 总之,使用Python开发微信公众号可以大大提高开发效率,使得开发者可以更加专注于业务逻辑的实现。 ### 回答2: Python 微信公众号是一个使用Python编程语言开发的微信服务平台。它提供了丰富的功能和工具,可以帮助开发者创建和管理自己的微信公众号。 首先,Python 微信公众号可以实现接收和发送消息的功能。开发者可以通过编写Python代码来处理用户发送的文本、图片、音频等消息,并根据需要进行相应的回复。这为开发者提供了与用户实时互动的机会,可以更好地满足用户的需求。 其次,Python 微信公众号还支持自定义菜单的创建和管理。开发者可以通过简单的配置文件或代码来创建自己的菜单,包括一级菜单和二级菜单。这样用户在关注公众号后,就可以通过菜单快速访问所需的功能,提高用户的使用体验。 此外,Python 微信公众号还可以实现素材管理的功能。开发者可以上传和管理素材,包括图文消息、图片、视频等,方便随时更新公众号的内容。通过这个功能,开发者可以灵活地运营公众号,提供更多有趣和有用的内容。 最后值得一提的是,Python 微信公众号还支持数据统计和分析功能。开发者可以获取公众号的用户数量、关注和取消关注的动态等信息,并可以通过分析工具进行数据分析,了解用户的兴趣和行为习惯,从而更好地为用户提供个性化的服务。 综上所述,Python 微信公众号是一个强大的工具,可以帮助开发者轻松创建和管理自己的微信公众号,提供更好的用户体验和优质的服务。无论是个人开发者还是企业,都可以通过Python 微信公众号实现自己的创业梦想或运营需求。 ### 回答3: Python 微信公众号是基于Python开发的一个平台,可以通过微信公众号进行各种与Python相关的操作和交流。在这个公众号中,用户可以学习Python语言的基础知识、进阶技巧以及实际应用。公众号会提供Python编程入门教程, 提供一些编程示例和案例,帮助用户更好地理解和掌握Python的使用。 公众号的功能还包括推送最新的Python技术热点和行业动态,让用户了解Python在各个领域的应用和发展趋势。同时,公众号还会分享一些Python编程的实践经验和技巧,帮助用户解决实际应用中遇到的问题。 此外,Python 微信公众号还会定期举办一些线上线下的活动,如Python编程比赛、技术分享会等,旨在促进Python开发者之间的交流和学习。 总体来说,Python微信公众号是一个面向Python开发者和爱好者的平台,通过这个公众号,用户可以获取到Python语言相关的最新资讯、学习资源和社区互动,提升自己的编程能力和技术水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值