茅台酒如何转卖?价格如何才最合理?爬取公众号后每天自动发送价格到钉钉如何呢?
最近i茅台非常火,同时火起来的还有茅台价格…于是想了一个思路
写了部分内容,希望能够有所帮助
具体步骤:
打开公众号,下载图片,图片识别,确认自己想要的内容–发送钉钉.
下面为爬取公众号代码模块
# -*- coding: utf-8 -*-from selenium import webdriver
import time
import json
import requests
import re
import random#微信公众号账号
user="你的公众号账号"
#公众号密码
password="你的公众号密码"
#设置要爬取的公众号列表
gzlist=['茅台酒最新价格-公众号-北京名酒价格回收中心']#登录微信公众号,获取登录之后的cookies信息,并保存到本地文本中
def weChat_login():#定义一个空的字典,存放cookies内容post={}#用webdriver启动谷歌浏览器print("启动浏览器,打开微信公众号登录界面")driver = webdriver.Chrome(executable_path='C:\chromedriver.exe')#打开微信公众号登录页面driver.get('https://mp.weixin.qq.com/')#等待5秒钟time.sleep(5)print("正在输入微信公众号登录账号和密码......")#清空账号框中的内容driver.find_element_by_xpath("./*//input[@id='account']").clear()#自动填入登录用户名driver.find_element_by_xpath("./*//input[@id='account']").send_keys(user)#清空密码框中的内容driver.find_element_by_xpath("./*//input[@id='pwd']").clear()#自动填入登录密码driver.find_element_by_xpath("./*//input[@id='pwd']").send_keys(password)# 在自动输完密码之后需要手动点一下记住我print("请在登录界面点击:记住账号")time.sleep(10)#自动点击登录按钮进行登录driver.find_element_by_xpath("./*//a[@id='loginBt']").click()# 拿手机扫二维码!print("请拿手机扫码二维码登录公众号")time.sleep(20)print("登录成功")#重新载入公众号登录页,登录之后会显示公众号后台首页,从这个返回内容中获取cookies信息driver.get('https://mp.weixin.qq.com/')#获取cookiescookie_items = driver.get_cookies()#获取到的cookies是列表形式,将cookies转成json形式并存入本地名为cookie的文本中for cookie_item in cookie_items:post[cookie_item['name']] = cookie_item['value']cookie_str = json.dumps(post)with open('cookie.txt', 'w+', encoding='utf-8') as f:f.write(cookie_str)print("cookies信息已保存到本地")#爬取微信公众号文章,并存在本地文本中
def get_content(query):#query为要爬取的公众号名称#公众号主页url = 'https://mp.weixin.qq.com'#设置headersheader = {"HOST": "mp.weixin.qq.com","User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0"}#读取上一步获取到的cookies with open('cookie.txt', 'r', encoding='utf-8') as f:cookie = f.read()cookies = json.loads(cookie)#登录之后的微信公众号首页url变化为:https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN&token=1849751598,从这里获取token信息response = requests.get(url=url, cookies=cookies)token = re.findall(r'token=(\d+)', str(response.url))[0]#搜索微信公众号的接口地址search_url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'#搜索微信公众号接口需要传入的参数,有三个变量:微信公众号token、随机数random、搜索的微信公众号名字query_id = {'action': 'search_biz','token' : token,'lang': 'zh_CN','f': 'json','ajax': '1','random': random.random(),'query': query,'begin': '0','count': '5'} #打开搜索微信公众号接口地址,需要传入相关参数信息如:cookies、params、headerssearch_response = requests.get(search_url, cookies=cookies, headers=header, params=query_id)#取搜索结果中的第一个公众号lists = search_response.json().get('list')[0]#获取这个公众号的fakeid,后面爬取公众号文章需要此字段fakeid = lists.get('fakeid')#微信公众号文章接口地址appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'#搜索文章需要传入几个参数:登录的公众号token、要爬取文章的公众号fakeid、随机数randomquery_id_data = {'token': token,'lang': 'zh_CN','f': 'json','ajax': '1','random': random.random(),'action': 'list_ex','begin': '0',#不同页,此参数变化,变化规则为每页加5'count': '5','query': '','fakeid': fakeid,'type': '9'}#打开搜索的微信公众号文章列表页appmsg_response = requests.get(appmsg_url, cookies=cookies, headers=header, params=query_id_data)#获取文章总数max_num = appmsg_response.json().get('app_msg_cnt')#每页至少有5条,获取文章总的页数,爬取时需要分页爬num = int(int(max_num) / 5)#起始页begin参数,往后每页加5begin = 0while num + 1 > 0 :query_id_data = {'token': token,'lang': 'zh_CN','f': 'json','ajax': '1','random': random.random(),'action': 'list_ex','begin': '{}'.format(str(begin)),'count': '5','query': '','fakeid': fakeid,'type': '9'}print('正在翻页:--------------',begin)#获取每一页文章的标题和链接地址,并写入本地文本中query_fakeid_response = requests.get(appmsg_url, cookies=cookies, headers=header, params=query_id_data)fakeid_list = query_fakeid_response.json().get('app_msg_list')for item in fakeid_list:content_link=item.get('link')content_title=item.get('title')fileName=query+'.txt'with open(fileName,'a',encoding='utf-8') as fh:fh.write(content_title+":\n"+content_link+"\n")num -= 1begin = int(begin)begin+=5time.sleep(2)if __name__=='__main__':try:#登录微信公众号,获取登录之后的cookies信息,并保存到本地文本中weChat_login()#登录之后,通过微信公众号后台提供的微信公众号文章接口爬取文章for query in gzlist:#爬取微信公众号文章,并存在本地文本中print("开始爬取公众号:茅台酒最新价格-北京名酒价格回收中心-"+query)get_content(query)print("爬取完成")except Exception as e:print(str(e))
图片转文字部分代码:
def PicToText(dir):# dir参数为照片存放的文件夹# 读取评论信息下面所有文件夹的名称mer_folds = os.listdir(dir)comment_dp = []t0_all = time.time()for i in range(0, len(mer_folds)):fold = mer_folds[i]print('正在转换第 %d 个茅台酒最新价格-公众号-北京名酒价格回收中心-图片' % (i+1))t0 = time.time()# 定义一个空的字典 用来存放图片名称+转换后文字的内容image_tag = {}# 定位到某一商户对应的所有评论信息图片的文件夹里面if fold == '.DS_Store':continueelse:pics = os.listdir(dir + str(fold))for pic in pics:# 针对mac系统的隐藏文件if pic == '.DS_Store':continueelse:# 遍历某一商户下所有图片print('正在转换茅台酒最新价格-公众号-北京名酒价格回收中心- %s 评论图片: %s' % (fold, pic))try:image = get_file_content(dir + str(fold) + '/' + str(pic))tag = client.basicGeneral(image, options)# 先定义一个空的字符 用于后面的拼接comments = ''# 进行判断 如果只识别出一个来 就直接赋值if tag['words_result_num'] == 1:image_tag[pic] = tag['words_result'][0]['words']# 如果不止一个 进行循环 然后拼接评论else:for i in range(tag['words_result_num']):comments = comments + tag['words_result'][i]['words'] + ' 'image_tag[pic] = commentstime.sleep(1)except Exception as e:print('报错信息为: ', e)# 此时一个商家的图片全部转换okt1 = time.time()print('茅台酒最新价格-公众号-北京名酒价格回收中心- %s 所有图片转换完毕, 所需时间为 %.2f s' % (str(fold), (t1 - t0)))# 先把这部分数据给存起来 形成数据框a = []b = []for k,v in image_tag.items():a.append(k)b.append(v)y = pd.DataFrame({'茅台酒最新价格-公众号-北京名酒价格回收中心-':a,'茅台酒最新价格-公众号-北京名酒价格回收中心-百度识别评论结果':b})y['商户号'] = foldcomment_dp.append(y)# else:# break# 输出所有的信息comment_dp_pd = pd.concat(comment_dp, axis=0)comment_dp_pd.to_csv('茅台酒最新价格-公众号-北京名酒价格回收中心-.csv', encoding = 'utf-8', index = False, quoting = 1)t1_all = time.time()print('茅台酒最新价格-公众号-北京名酒价格回收中心-图片转换完毕,所需时间为 %.2f s' % (t1_all - t0_all))return comment_dp_pd
发送钉钉代码模块:
import requests
from json import dumps
from datetime import datetimedef send_msg(content):"""钉钉消息提醒模块"""webhook = "设置自己的钉钉 webhook"# 钉钉安全规则将 天勤量化 设为关键字msg = {"msgtype": "text","text": {"content": "{}\n{}\n".format("茅台酒最新价格-北京名酒价格回收中心\n最新报价" + content,datetime.now().strftime("%Y-%m-%d %H:%M:%S"))}, }headers = {"content-type": "application/json;charset=utf-8"}body = dumps(msg)requests.post(webhook, data=body, headers=headers)print(content)
茅台酒如何转卖?价格如何才最合理?爬取公众号后每天自动发送价格到钉钉如何呢?相关推荐
- 公众号代运营的价格一般是多少钱
公众号代运营 公众号代运营的价格一般是多少钱?对于公众号运营大家应该都不陌生,顾名思义就是公众号代运营的市场价格通常是多少钱?针对微信公众号运营想必大家并不陌生,简单的说就是通过对公众号内容运营管理等 ...
- 利用Ajax爬取今日头条头像,街拍图片。关于崔庆才python爬虫爬取今日头条街拍内容遇到的问题的解决办法。
我也是初学爬虫,在看到崔庆才大佬的爬虫实战:爬取今日头条街拍美图时,发现有些内容过于陈旧运行程序时已经报错,网页的源代码早已不一样了.以下是我遇到的一些问题. 1.用开发者选项筛选Ajax文件时预览看 ...
- python爬取股票网站的历史周价格
import requestsfrom bs4 import BeautifulSoup as bs import json import csv#宏变量存储目标js的URL列表 STOCKPAGEU ...
- Python爬取惠农网,看看农产品价格如何
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 ( 想要学习Python?Python学习交流群:1039649593,满足 ...
- 爬取steam上热门游戏的价格,网址,评价数据
我学爬虫是始于装叉,但是装叉动力不够,老师大作业要我们学,无奈,这里试着用python爬取steam动态网页的数据,挺简单的 # -*- coding: utf-8 -*- # @Author:胡澳治 ...
- 使用python异步爬取淘宝大量商品的价格,并生成excel文件
一个很简单的爬虫,但是由于request库不支持协程,如果要爬取多个页面的商品,会耗费大量的时间在同步网页请求上,简直就是龟速. 但是呢,官方专门提供了一个aiohttp库,用来实现异步网页请求等功能 ...
- 关注微信公众号后,才可以参加活动等等问题
最近在做手机端微信的项目.准确来说我是前端开发人员,但是由于在学校时学的java,正好项目是java写的.开始时项目是有框架了的,现在项目需要加关注后,才可以领取奖励之类的,详情见如下网址: http ...
- pyhton爬虫 爬取电商平台商品历史价格、最低价格(慢慢买网)
主要使用的库: requests:爬虫请求并获取源码 re:使用正则表达式提取数据 json:使用JSON提取数据 pandas:使用pandans存储数据 #!coding=utf-8 import ...
- python爬虫实战 爬取汽车之家上车型价格
相关库 import pymysql import pymysql.cursors from bs4 import BeautifulSoup import requests import rando ...
最新文章
- php7 imagick安装,php扩展imagick安装for windows7
- 读文件并返回其中最大最小行的shell脚本
- 马尔可夫蒙特卡罗 MCMC 原理及经典实现
- -bash: mysql_upgrade: command not found
- 大数据系统架构模块解析
- linux f95编译器,Fortran 95编译器是否可以编译Fortran 77代码?
- C#.NET身份证验证算法
- 202206-2 寻宝!大冒险! CCF认证真题
- qmh(qtmediahub)插件研究
- 关于excel 打开时提示 文件正在使用 正处于锁定状态 正在编辑 的不治本但简单可行的解决办法
- Groovy学习(二):GDK初探
- 个人开发者用户福音,轻松申请微信商户、支付宝支付妙招
- 人工智能时代:人人会编程、程序员年龄越来越年轻化了
- android 9 8 对比,iPhone 8plus在安卓机中相当于什么层次?看看它与小米9的对比吧...
- K近邻模型、KNN算法1-构建预测模型
- C语言编写程序:判断某年份是否为闰年
- API采集接口源码电商采集工具接口
- EBS INV 计算现有量(标准API)、保留量、可用量 ---根据批次、库存组织、子库
- Python实现自动从中控考勤机软件中下载记录数据
- 边缘保留滤波(EPF)