zoukankan      html  css  js  c++  java
  • python爬搜狗微信获取指定微信公众号的文章

    前言:

    之前收藏了一个叫微信公众号的文章爬取,里面用到的模块不错。然而

    偏偏报错= =。果断自己写了一个

    正文:

    第一步爬取搜狗微信搜到的公众号:

    http://weixin.sogou.com/weixin?type=1&query=FreeBuf&ie=utf8&s_from=input&_sug_=n&_sug_type_=1&w=01015002&oq=&ri=11&sourceid=sugg&sut=0&sst0=1529673558816&lkt=0%2C0%2C0&p=40040108

    将FreeBuf改为自己要搜的公众号

    查看网页源代码:

    正则匹配:

    第一个正则:匹配指定的URL 正则: src=.*&timestamp=.*&ver=.*&signature=.*

    蓝色标出来的是我们要的,注意多请求URL可以注意到URL,signature也就是签名是随机变化的。所以可得到正则:.*== ,取第一个,然后打开此链接爬取文章链接即可(更多细节会在代码看到)

    代码:

    import requests
    import re
    import threading
    user=input('请输入要搜索的微信公众号或微信号:')
    headers={'user-agent':'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)'}
    url='http://weixin.sogou.com/weixin?type=1&s_from=input&query={}&ie=utf8&_sug_=y&_sug_type_=&w=01015002&oq=jike&ri=0&sourceid=sugg&stj=0%3B0%3B0%3B0&stj2=0&stj0=0&stj1=0&hp=36&hp1=&sut=4432&sst0=1529305369937&lkt=5%2C1529305367635%2C1529305369835'.format(user.rstrip())
    
    
    def zhuaqu():
        r = requests.get(url=url, headers=headers)
        rsw = re.findall('src=.*&timestamp=.*&ver=.*&signature=.*', str(r.text))
        if '验证码' in str(r.text):
            print('[-]发现验证码请访问URL:{}后在重新运行此脚本'.format(r.url))
            exit()
        else:
            cis = re.findall('.*?==', str(rsw[0]))
            qd = "".join(cis)
            qd2 = "{}".format(qd)
            qd3 = qd2.replace(';', '&')
            urls = 'https://mp.weixin.qq.com/profile?'.strip() + qd3
            uewq=requests.get(url=urls,headers=headers)
            if '验证码' in str(uewq.text):
                    print('[-]发现验证码请访问URL:{}后在重新运行此脚本'.format(uewq.url))
                    exit()
            else:
                    ldw = re.findall('src = ".*?" ; ', uewq.text)
                    ldw2=re.findall('timestamp = ".*?" ; ',uewq.text)
                    ldw3=re.findall('ver = ".*?" ; ',uewq.text)
                    ldw4=re.findall('signature = ".*?"',uewq.text)
                    ldws="".join(ldw)
                    ldw2s="".join(ldw2)
                    ldw3s="".join(ldw3)
                    ldw4s="".join(ldw4)
                    ldwsjihe=ldws+ldw2s+ldw3s+ldw4s
                    fk=ldwsjihe.split()
                    fkchuli="".join(fk)
                    gs=fkchuli.replace('"','')
                    hew=gs.replace(';','&')
                    wanc="http://mp.weixin.qq.com/profile?"+hew
                    xiau=requests.get(url=wanc,headers=headers)
                    houxu=re.findall('{.*?}',xiau.content.decode('utf-8'))
                    title=re.findall('"title":".*?"',str(houxu))
                    purl=re.findall('"content_url":".*?"',str(houxu))
                    for i in range(0,len(title)):
                        jc='{}:{}'.format(title[i],'https://mp.weixin.qq.com'+purl[i]).replace('"','')
                        jc2=jc.replace('content_url','')
                        jc3=jc2.replace(';','&')
                        print(jc3)
    
    t=threading.Thread(target=zhuaqu,args=())
    t.start()

    测试结果:

     

    BGM:

  • 相关阅读:
    为啥负利率国债有人抢着买?因为时代变了
    微增长时代
    U盘插入电脑后图标是灰色的,打开提示“请将磁盘插入驱动器”
    计算shell 脚本的执行时间
    win10系统应用商店打开后无法联网 代码: 0x80131500 的解决办法
    Jetbrains家的软件都可用的激活码-pycharm
    postman中x-www-form-urlencoded与form-data的区别
    升级Gogs版本
    上海对售价超1499元的茅台酒即没收并另处罚款
    提高收入的根本途径
  • 原文地址:https://www.cnblogs.com/haq5201314/p/9215569.html
Copyright © 2011-2022 走看看