python使用webdriver爬取微信公众号

  

本文实例为大家分享了python使用webdriver爬取微信公众号的具体代码,供大家参考,具体内容如下

  

        # - * -编码:utf - 8 - *      从硒进口webdriver   导入的时间   进口json   进口的要求   进口再保险   进口随机      #微信公众号账号   用户=" "   #公众号密码   密码=" "   #设置要爬取的公众号列表   gzlist=['香河微服务”)      #登录微信公众号,获取登录之后的饼干信息,并保存到本地文本中   def weChat_login ():   #定义一个空的字典,存放饼干内容   帖子={}      #用webdriver启动谷歌浏览器   打印(“启动浏览器,打开微信公众号登录界面”)   司机=webdriver.Chrome (executable_path=' E: \ \程序\ \ chromedriver.exe”)   #打开微信公众号登录页面   driver.get (“https://mp.weixin.qq.com/?   #等待5秒钟   time . sleep (5)   打印(“正在输入微信公众号登录账号和密码……”)   #清空账号框中的内容   driver.find_element_by_xpath ("//* [@ id=\ "头\ "]/div [2]/div/div/形式/div [1]/div [1]/div/跨度/输入”).clear ()   #自动填入登录用户名   driver.find_element_by_xpath ("//* [@ id=\ "头\ "]/div [2]/div/div/形式/div [1]/div [1]/div/跨度/输入”).send_keys(用户)   #清空密码框中的内容   driver.find_element_by_xpath ("//* [@ id=\ "头\ "]/div [2]/div/div/形式/div [1]/div [2]/div/跨度/输入”).clear ()   #自动填入登录密码   driver.find_element_by_xpath ("//* [@ id=\ "头\ "]/div [2]/div/div/形式/div [1]/div [2]/div/跨度/输入”).send_keys(密码)      #在自动输完密码之后需要手动点一下记住我   打印(请在登录界面点击:记住账号”)   time . sleep (10)   #自动点击登录按钮进行登录   driver.find_element_by_xpath ("//* [@ id=\ "头\ "]/div [2]/div/div/形式/div [4]”) .click ()   #拿手机扫二维码!   打印(“请拿手机扫码二维码登录公众号”)   time . sleep (20)   打印(“登录成功”)   #重新载入公众号登录页,登录之后会显示公众号后台首页,从这个返回内容中获取饼干信息   driver.get (“https://mp.weixin.qq.com/?   #获取饼干   cookie_items=driver.get_cookies ()      #获取到的饼干是列表形式,将饼干转成json形式并存入本地名为饼干的文本中   在cookie_items cookie_item:   文章[cookie_item['名字']]=cookie_item(“价值”)   cookie_str=json.dumps (post)   张开(“饼干。txt, w + f):   f.write (cookie_str)   打印(“饼干信息已保存到本地”)      #爬取微信公众号文章,并存在本地文本中   def get_content(查询):   #查询为要爬取的公众号名称   #公众号主页   url=' https://mp.weixin.qq.com '   #设置标头   头={   “主机”:“mp.weixin.qq.com”,   “用户代理”:“Mozilla/5.0 (Windows NT 6.1;WOW64;房车:Firefox 53.0)壁虎/20100101/53.0”   }      #读取上一步获取到的饼干   张开(“饼干。txt”、“r”)作为f:   饼干=f.read () .decode (“utf - 8”)   饼干=json.loads(饼干)      #登录之后的微信公众号首页url变化为:https://mp.weixin.qq.com/cgi-bin/home& # 63; t=回家/index& lang=zh_CN&令牌=1849751598,从这里获取令牌信息=响应请求。得到(url=url,饼干=饼干)   令牌=re.findall (r 'token=(\ d +) ', str (response.url)) [0]      #搜索微信公众号的接口地址   search_url=' https://mp.weixin.qq.com/cgi-bin/searchbiz& # 63;   #搜索微信公众号接口需要传入的参数,有三个变量:微信公众号标记,随机数随机的,搜索的微信公众号名字   query_id={   “行动”:“search_biz”,   “令牌”:令牌,   “朗”:“zh_CN”,   f: json,   “ajax”:“1”,   “随机”:random.random (),   查询:查询,   “开始”:“0”,   “数”:“5”   }   #打开搜索微信公众号接口地址,需要传入相关参数信息如:饼干,params,头   search_response=请求。get (search_url饼干=饼干,标题=头,params=query_id)   #取搜索结果中的第一个公众号   列表=search_response.json () . get(“列表”)[0]   #获取这个公众号的fakeid,后面爬取公众号文章需要此字段   fakeid=lists.get (“fakeid”)      #微信公众号文章接口地址   appmsg_url=' https://mp.weixin.qq.com/cgi-bin/appmsg& # 63;   #搜索文章需要传入几个参数:登录的公众号标记,要爬取文章的公众号fakeid,随机数随机的   query_id_data=https://www.yisu.com/zixun/{“令牌”:令牌,   “朗”:“zh_CN”,   f: json,   “ajax”:“1”,   “随机”:random.random (),   “行动”:“list_ex”,   “开始”:“0”,#不同页,此参数变化,变化规则为每页加5   “数”:“5”,   “查询”:”,   “fakeid”: fakeid,   “类型”:“9”   }   #打开搜索的微信公众号文章列表页   appmsg_response=请求。get (appmsg_url饼干=饼干,标题=头,params=query_id_data)   #获取文章总数   max_num=appmsg_response.json () . get (“app_msg_cnt”)   #每页至少有5条,获取文章总的页数,爬取时需要分页爬   num=int (int (max_num)/5)   #起始页开始参数,往后每页加5   开始=0   num + 1比;0:   query_id_data=https://www.yisu.com/zixun/{“令牌”:令牌,   “朗”:“zh_CN”,   f: json,   “ajax”:“1”,   “随机”:random.random (),   “行动”:“list_ex”,   “开始”:“{}”.format (str(开始)),   “数”:“5”,   “查询”:”,   “fakeid”: fakeid,   “类型”:“9”   }   打印(“正在翻页:- - - - - - - - - - - - - - - -”,开始)      #获取每一页文章的标题和链接地址,并写入本地文本中   query_fakeid_response=请求。get (appmsg_url饼干=饼干,标题=头,params=query_id_data)   fakeid_list=query_fakeid_response.json () . get (“app_msg_list”)   在fakeid_list:项   content_link=item.get(链接)   content_title=item.get(标题)   文件名=查询+ ' . txt '   #张开(“e://xhwfw.txt”,“一个”)跳频:   # fh.write (content_title + ": \ n " + content_link +“\ n”)   打印content_title + ": \ n " + content_link +“\ n”   num -=1   开始=int(开始)   开始+=5   time . sleep (2)      if __name__==癬_main__”:   试一试:   #登录微信公众号,获取登录之后的饼干信息,并保存到本地文本中   weChat_login ()   #登录之后,通过微信公众号后台提供的微信公众号文章接口爬取文章   在gzlist查询:   #爬取微信公众号文章,并存在本地文本中   打印(“开始爬取公众号:”+查询)   get_content(查询)   打印(“爬取完成”)   除了例外e:   打印(str (e))      

python使用webdriver爬取微信公众号