本文实例为大家分享了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爬取微信公众号