From 329ec59002e2293d8cb3f940d869c3ec3b340251 Mon Sep 17 00:00:00 2001 From: BattlesSymphony <2603602530@qq.com> Date: Tue, 9 Apr 2019 15:52:32 +0800 Subject: [PATCH 1/4] add send_msg_with_mongo.py and xianyu.py --- send_msg_with_mongo.py | 97 ++++++++++++++++++++++++++++++++++++++++++ xianyu.py | 81 +++++++++++++++++++++++++++++++++++ 2 files changed, 178 insertions(+) create mode 100644 send_msg_with_mongo.py create mode 100644 xianyu.py diff --git a/send_msg_with_mongo.py b/send_msg_with_mongo.py new file mode 100644 index 0000000..4f69c26 --- /dev/null +++ b/send_msg_with_mongo.py @@ -0,0 +1,97 @@ +from wxpy import * +from pymongo import MongoClient +from pymongo.collection import Collection +from xianyu import return_result + + +bot = Bot(cache_path = True) +friend_list = bot.friends() + +client = MongoClient() # 里面什么都不填的话, 默认localhost, 27017 +killer = client['killer'] +config_list = Collection(killer, 'config_list') + +# 这里配置我们想要什么信息 +# msg.text.startswith('搜索关键词:') 这个写在判断语句里, 也是我们想要的信息 +WORD_DICT = { + 'keyword': ['配置信息', '配置', '1', '2'] +} + + +@bot.register(friend_list, TEXT) +def auto_reply(msg): + print(msg.text) + if msg.text in WORD_DICT['keyword'] or msg.text.startswith('搜索关键词:'): + # 如果用户输入 '配置信息' 或者 '配置' + if msg.text == '配置信息' or msg.text == "配置": + print(msg.sender.name,':', msg.text, 'MSG_TYPE:', msg.type) + return '请按格式回复你的配置信息,格式如下,请把内容替换成你的内容:\n搜索关键词:麻瓜编程、自动办公、实用主义学Python' + + # 如果用户输入的以搜索关键词:开头的储存进数据库 + if msg.text.startswith('搜索关键词:') and len(msg.text.strip()) > 6: + print(msg.text) + config = {} + config['is_sure'] = 0 + config['user_name'] = msg.sender.name + config['query_list'] = [i.strip() for i in msg.text.lstrip('搜索关键词:').split('、') if len(i.strip())>0] + if len(config['query_list']) == 0: + return '请按格式回复你的配置信息,格式如下,请把内容替换成你的内容:\n搜索关键词:麻瓜编程、自动办公、实用主义学Python' + config['is_crawled'] = False + + # 这里应该添加一个判断, 就比如用户 输入了两遍 搜索关键词:麻瓜编程、自动办公、实用主义学Python + # 搜索关键词:麻瓜编程、自动办公、实用主义学Python + # 如果数据库里有这个用户配置的信息 就让用户回复1 和 2 否则就插入数据库 + print(config) + user = config_list.find_one({'user_name':msg.sender.name, 'is_sure': 0, 'is_crawled': False}) + if user is not None: + if len(user) > 0 : + return f'你之前提交过配置 配置的信息如下:\n搜索关键词:{"、".join(user["query_list"])}\n确认请回复 1\n如需修改请回复 2' + else: + config_list.insert(config) + + return f'你配置的信息如下:\n {msg.text}\n确认请回复 1\n如需修改请回复 2' + + + # 如果用户会回复的是1 就说明要 确认 搜索关键词 + if msg.text == '1': + # 找到这个用户信息 is_sure = 0 并且 is_crawled = False + user = config_list.find_one({'user_name':msg.sender.name, 'is_sure': 0, 'is_crawled': False}) + # 如果有这个用户 就更新数据库 is_sure = 0 + # 这里 user 没有获取到就是None + try: + if len(user) > 0: + print('找到了该用户%s' %msg.sender.name) + # 这里这个方法不对, 只更新了当前的这条数据, 并没有更新到数据库 + # user.update({'$set':{'is_sure': 1}}) + config_list.update({'user_name':msg.sender.name, 'is_sure': 0, 'is_crawled': False}, {'$set': {'is_sure': 1}}) + msg.reply('配置成功,请稍后') + return_result(user, msg, config_list) + except: + return '你还没有配置\n请按格式回复你的配置信息,格式如下,请把内容替换成你的内容:\n搜索关键词:麻瓜编程、自动办公、实用主义学Python' + # 如果用户输入的是2 就要删除数据库中的记录 可以做逻辑删除, 我这里直接物理删除了 + elif msg.text == '2': + try: + user = config_list.find_one({'user_name':msg.sender.name, 'is_sure':0}) + # 这里 user 没有获取到就是None + if len(user) > 0: + config_list.remove({'user_name':msg.sender.name, 'is_sure':0}) + return '请按格式回复你的配置信息,格式如下,请把内容替换成你的内容:\n搜索关键词:麻瓜编程、自动办公、实用主义学Python' + except: + return '你还没有配置\n请按格式回复你的配置信息,格式如下,请把内容替换成你的内容:\n搜索关键词:麻瓜编程、自动办公、实用主义学Python' + # 如果输入的文本 不在 WORD_DICT 中或者 不是以搜索关键词:开头的话 + # 这里如果是自己的微信号的话 建议注释掉。。。。 + # else: + # return '少侠你又调皮了 配置信息有误\n请按格式回复你的配置信息,格式如下,请把内容替换成你的内容:\n搜索关键词:麻瓜编程、自动办公、实用主义学Python' + + +# 自动添加好友并回复 我是盗版杀手机器人,请通过回复 "配置" 来配置你的信息 +@bot.register(msg_types=FRIENDS) +def auto_accept_friends(msg): + # 接受好友请求 + new_friend = msg.card.accept() + # 向新的好友发送消息 + new_friend.send('我是一个没有感情的盗版杀手机器人,请通过回复 "配置" 来配置你的信息') + + +embed() +# bot.join() \ No newline at end of file diff --git a/xianyu.py b/xianyu.py new file mode 100644 index 0000000..053e008 --- /dev/null +++ b/xianyu.py @@ -0,0 +1,81 @@ +import re +import time +import requests +import multiprocessing +from fake_useragent import UserAgent +from lxml import etree +from multiprocessing import Pool +# 不能从send_msg_with_mongo 导入 我就把这边的函数引过去。。。。 +# from send_msg_with_mongo import config_list, friend_list + +ua = UserAgent() +headers = { + 'User-Agent': ua.random +} + +def get_you_want(query): + url = f'https://s.2.taobao.com/list/?_input_charset=utf8&q={query}' + resp = requests.get(url, headers=headers).text + urls = [] + try: + total_page = int(re.findall("共(\d+)页", resp)[0]) + # 我们这里返回前10页就够了, 100页的商品 后面基本都是没用的 + if total_page > 10: + total_page = 10 + for i in range(1, total_page+1): + url = f'https://s.2.taobao.com/list/?_input_charset=utf8&q={query}&page={i}' + urls.append(url) + return urls + except: + return None + + + + +def parse_page(url, msg, query): + resp = requests.get(url, headers=headers).text + time.sleep(1) + html = etree.HTML(resp) + items = html.xpath("//div[contains(@class, 'ks-waterfall')]")[1:] + for item in items: + data = { + 'title' : item.xpath('.//div[@class="item-pic"]/a/@title')[0], + 'img' : item.xpath('.//div[@class="item-pic"]/a/img/@src')[0], + 'href' : 'https:' + item.xpath('.//div[@class="item-pic"]/a/@href')[0], + 'item_id': item.xpath('.//div[@class="item-pic"]/a/@href')[0].split('=')[-1], + 'desc' : item.xpath('.//div[@class="item-brief-desc"]/text()')[0], + 'price' : item.xpath('.//span[@class="price"]/em/text()')[0], + 'location' : item.xpath('.//div[@class="item-location"]/text()')[0], + # 'is_sold': False + } + # 这里最好判断一下关键词在不在里面。。。 设置个办公自动化 美容美体床、自动双面激光打印机都给我出来了。。。 + if query in data['title'] or query in data['desc']: + print(f"{query} 新发现一个盗版商品-{data['title']}-{data['href']}") + print(data['item_id']) + msg.reply(f"{query} 新发现一个盗版商品-{data['title']}-电脑链接为{data['href']}\n app链接为 https://market.m.taobao.com/app/idleFish-F2e/widle-taobao-rax/page-detail?wh_weex=true&wx_navbar_transparent=true&id={data['item_id']}") + time.sleep(1) + + +def return_result(user, msg, config_list): + # MAX_WORKER_NUM = multiprocessing.cpu_count() + # pool = Pool(MAX_WORKER_NUM) + query_list = user['query_list'] + print(query_list) + # query = '麻瓜编程' + for query in query_list: + urls = get_you_want(query) + if urls: + for url in urls: + parse_page(url, msg, query) + msg.reply('-----------------------') + # 这里多进程好像用不了。。。。也不用了吧。。 爬取太快 发送的太快..号会不会被封。。。 + # pool.apply_async(parse_page, args=(url, msg)) + # 不close 不join 程序运行不了。。 + # pool.close() + # pool.join() + else: + msg.reply('没有找到相关的信息 %s' %query) + msg.reply('回复完毕, 请查看!') + # 更新用户 是否已经爬取 是 。这里不保存信息的话也可以从数据库直接删除 + config_list.update({'user_name':user['user_name'], 'is_sure': 1, 'is_crawled': False},{"$set":{'is_crawled': True}}) + \ No newline at end of file From 2a87b2a91de235ffefff36a02d58631da0424aa5 Mon Sep 17 00:00:00 2001 From: BattlesSymphony <2603602530@qq.com> Date: Wed, 10 Apr 2019 18:14:01 +0800 Subject: [PATCH 2/4] =?UTF-8?q?'=E6=B7=BB=E5=8A=A0=E5=AE=9A=E6=97=B6'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- send_msg_with_mongo.py | 69 ++++++++++++++-------- xianyu.py | 126 +++++++++++++++++++++++++++++++---------- 2 files changed, 141 insertions(+), 54 deletions(-) diff --git a/send_msg_with_mongo.py b/send_msg_with_mongo.py index 4f69c26..45886b9 100644 --- a/send_msg_with_mongo.py +++ b/send_msg_with_mongo.py @@ -1,15 +1,17 @@ +import datetime +import time from wxpy import * from pymongo import MongoClient from pymongo.collection import Collection -from xianyu import return_result +from xianyu import return_result, loop_reply bot = Bot(cache_path = True) friend_list = bot.friends() client = MongoClient() # 里面什么都不填的话, 默认localhost, 27017 -killer = client['killer'] -config_list = Collection(killer, 'config_list') +killer_test = client['killer_test'] +config_list = Collection(killer_test, 'config_list') # 这里配置我们想要什么信息 # msg.text.startswith('搜索关键词:') 这个写在判断语句里, 也是我们想要的信息 @@ -37,46 +39,53 @@ def auto_reply(msg): if len(config['query_list']) == 0: return '请按格式回复你的配置信息,格式如下,请把内容替换成你的内容:\n搜索关键词:麻瓜编程、自动办公、实用主义学Python' config['is_crawled'] = False + config['crawled_time'] = None # 这里应该添加一个判断, 就比如用户 输入了两遍 搜索关键词:麻瓜编程、自动办公、实用主义学Python # 搜索关键词:麻瓜编程、自动办公、实用主义学Python # 如果数据库里有这个用户配置的信息 就让用户回复1 和 2 否则就插入数据库 print(config) - user = config_list.find_one({'user_name':msg.sender.name, 'is_sure': 0, 'is_crawled': False}) + # 我们先插数据库里是否有这个用户的设置记录, 若果有就让他按 2 清除 + user = config_list.find_one({'user_name':msg.sender.name, 'is_sure': 1, 'is_crawled': True}) if user is not None: - if len(user) > 0 : - return f'你之前提交过配置 配置的信息如下:\n搜索关键词:{"、".join(user["query_list"])}\n确认请回复 1\n如需修改请回复 2' + return f'你之前提交过配置 配置的信息如下:\n搜索关键词:{"、".join(user["query_list"])}\n如需修改请回复 2' + # else 证明数据库里没有这个用户的爬取数据 则判断用户是否已经设置过一次 else: - config_list.insert(config) + user = config_list.find_one({'user_name':msg.sender.name, 'is_sure': 0, 'is_crawled': False}) + if user is not None: + # if len(user) > 0 : + return f'你之前提交过配置 配置的信息如下:\n搜索关键词:{"、".join(user["query_list"])}\n确认请回复 1\n如需修改请回复 2' + else: + config_list.insert(config) return f'你配置的信息如下:\n {msg.text}\n确认请回复 1\n如需修改请回复 2' # 如果用户会回复的是1 就说明要 确认 搜索关键词 if msg.text == '1': - # 找到这个用户信息 is_sure = 0 并且 is_crawled = False - user = config_list.find_one({'user_name':msg.sender.name, 'is_sure': 0, 'is_crawled': False}) - # 如果有这个用户 就更新数据库 is_sure = 0 - # 这里 user 没有获取到就是None - try: - if len(user) > 0: + print('am in msg.text == 1') + user = config_list.find_one({'user_name':msg.sender.name, 'is_sure': 1, 'is_crawled': True}) + print(' hi am here') + if user is not None: + return f'你之前提交过配置 配置的信息如下:\n搜索关键词:{"、".join(user["query_list"])}\n如需重新配置请回复 2' + # else 证明数据库里没有这个用户的爬取数据 则判断用户是否已经设置过一次 + else: + user = config_list.find_one({'user_name':msg.sender.name, 'is_sure': 0, 'is_crawled': False}) + if user is not None: print('找到了该用户%s' %msg.sender.name) - # 这里这个方法不对, 只更新了当前的这条数据, 并没有更新到数据库 - # user.update({'$set':{'is_sure': 1}}) config_list.update({'user_name':msg.sender.name, 'is_sure': 0, 'is_crawled': False}, {'$set': {'is_sure': 1}}) msg.reply('配置成功,请稍后') return_result(user, msg, config_list) - except: - return '你还没有配置\n请按格式回复你的配置信息,格式如下,请把内容替换成你的内容:\n搜索关键词:麻瓜编程、自动办公、实用主义学Python' + else: + return '你还没有配置\n请按格式回复你的配置信息,格式如下,请把内容替换成你的内容:\n搜索关键词:麻瓜编程、自动办公、实用主义学Python' + # 如果用户输入的是2 就要删除数据库中的记录 可以做逻辑删除, 我这里直接物理删除了 - elif msg.text == '2': - try: - user = config_list.find_one({'user_name':msg.sender.name, 'is_sure':0}) - # 这里 user 没有获取到就是None - if len(user) > 0: - config_list.remove({'user_name':msg.sender.name, 'is_sure':0}) - return '请按格式回复你的配置信息,格式如下,请把内容替换成你的内容:\n搜索关键词:麻瓜编程、自动办公、实用主义学Python' - except: + if msg.text == '2': + user = config_list.find_one({'user_name':msg.sender.name}) + if user is not None: + config_list.remove({'user_name':msg.sender.name}) + return '请按格式回复你的配置信息,格式如下,请把内容替换成你的内容:\n搜索关键词:麻瓜编程、自动办公、实用主义学Python' + else: return '你还没有配置\n请按格式回复你的配置信息,格式如下,请把内容替换成你的内容:\n搜索关键词:麻瓜编程、自动办公、实用主义学Python' # 如果输入的文本 不在 WORD_DICT 中或者 不是以搜索关键词:开头的话 # 这里如果是自己的微信号的话 建议注释掉。。。。 @@ -92,6 +101,16 @@ def auto_accept_friends(msg): # 向新的好友发送消息 new_friend.send('我是一个没有感情的盗版杀手机器人,请通过回复 "配置" 来配置你的信息') +# 每日自动发送 +# 测试用的 每隔5分钟。。。 +while True: + for user in config_list.find({}): + time_now = datetime.datetime.now() + if user['is_crawled'] == True and time_now > user['crawled_time'] + datetime.timedelta(minutes=5): + # if user['is_crawled'] == True and user['crawled_time'] + datetime.timedelta(hours=24) > time_now: + friend = bot.friends().search(name=user['user_name'])[0] + loop_reply(friend, user, config_list) + time.sleep(60) embed() # bot.join() \ No newline at end of file diff --git a/xianyu.py b/xianyu.py index 053e008..c1d2099 100644 --- a/xianyu.py +++ b/xianyu.py @@ -1,10 +1,9 @@ import re import time import requests -import multiprocessing +import datetime from fake_useragent import UserAgent from lxml import etree -from multiprocessing import Pool # 不能从send_msg_with_mongo 导入 我就把这边的函数引过去。。。。 # from send_msg_with_mongo import config_list, friend_list @@ -14,7 +13,7 @@ } def get_you_want(query): - url = f'https://s.2.taobao.com/list/?_input_charset=utf8&q={query}' + url = f'https://s.2.taobao.com/list/?_input_charset=utf8&ist=1&q={query}' resp = requests.get(url, headers=headers).text urls = [] try: @@ -23,59 +22,128 @@ def get_you_want(query): if total_page > 10: total_page = 10 for i in range(1, total_page+1): - url = f'https://s.2.taobao.com/list/?_input_charset=utf8&q={query}&page={i}' + url = f'https://s.2.taobao.com/list/?_input_charset=utf8&ist=1&q={query}&page={i}' urls.append(url) return urls except: return None +def parse_pub_time(pub_time): + if '分钟' in pub_time: + num = int(re.search('\d+', pub_time).group()) + pub_time = datetime.datetime.now() - datetime.timedelta(minutes=num) + elif '小时' in pub_time: + num = int(re.search('\d+', pub_time).group()) + pub_time = datetime.datetime.now() - datetime.timedelta(hours=num) + elif '天' in pub_time: + num = int(re.search('\d+', pub_time).group()) + pub_time = datetime.datetime.now() - datetime.timedelta(days=num) + elif '月' in pub_time: + num = int(re.search('\d+', pub_time).group()) + pub_time = datetime.datetime.now() - datetime.timedelta(days=30*num) + elif '年' in pub_time: + num = int(re.search('\d+', pub_time).group()) + pub_time = datetime.datetime.now() - datetime.timedelta(days=365*num) + return pub_time - -def parse_page(url, msg, query): +def parse_page_auto(url, data_list, query, user): resp = requests.get(url, headers=headers).text time.sleep(1) html = etree.HTML(resp) items = html.xpath("//div[contains(@class, 'ks-waterfall')]")[1:] for item in items: + item_id = item.xpath('.//div[@class="item-pic"]/a/@href')[0].split('=')[-1] data = { - 'title' : item.xpath('.//div[@class="item-pic"]/a/@title')[0], - 'img' : item.xpath('.//div[@class="item-pic"]/a/img/@src')[0], - 'href' : 'https:' + item.xpath('.//div[@class="item-pic"]/a/@href')[0], - 'item_id': item.xpath('.//div[@class="item-pic"]/a/@href')[0].split('=')[-1], - 'desc' : item.xpath('.//div[@class="item-brief-desc"]/text()')[0], - 'price' : item.xpath('.//span[@class="price"]/em/text()')[0], - 'location' : item.xpath('.//div[@class="item-location"]/text()')[0], + 'title': item.xpath('.//div[@class="item-pic"]/a/@title')[0], + 'img': item.xpath('.//div[@class="item-pic"]/a/img/@src')[0], + 'href': 'https:' + item.xpath('.//div[@class="item-pic"]/a/@href')[0], + 'item_id': item_id, + 'desc': item.xpath('.//div[@class="item-brief-desc"]/text()')[0], + 'price': item.xpath('.//span[@class="price"]/em/text()')[0], + 'location': item.xpath('.//div[@class="item-location"]/text()')[0], + 'pub_time': parse_pub_time(item.xpath('.//span[@class="item-pub-time"]/text()')[0]), + 'app_link': 'https://market.m.taobao.com/app/idleFish-F2e/widle-taobao-rax/page-detail?wh_weex=true&wx_navbar_transparent=true&id=' + item_id # 'is_sold': False } # 这里最好判断一下关键词在不在里面。。。 设置个办公自动化 美容美体床、自动双面激光打印机都给我出来了。。。 + # 如果第一爬的话 就全部返回 第一次爬 if query in data['title'] or query in data['desc']: + # if user['crawled_time'] is None: print(f"{query} 新发现一个盗版商品-{data['title']}-{data['href']}") - print(data['item_id']) - msg.reply(f"{query} 新发现一个盗版商品-{data['title']}-电脑链接为{data['href']}\n app链接为 https://market.m.taobao.com/app/idleFish-F2e/widle-taobao-rax/page-detail?wh_weex=true&wx_navbar_transparent=true&id={data['item_id']}") - time.sleep(1) - - + data_list.append(data) + def return_result(user, msg, config_list): - # MAX_WORKER_NUM = multiprocessing.cpu_count() - # pool = Pool(MAX_WORKER_NUM) query_list = user['query_list'] print(query_list) # query = '麻瓜编程' for query in query_list: + data_list = [] urls = get_you_want(query) if urls: for url in urls: - parse_page(url, msg, query) - msg.reply('-----------------------') - # 这里多进程好像用不了。。。。也不用了吧。。 爬取太快 发送的太快..号会不会被封。。。 - # pool.apply_async(parse_page, args=(url, msg)) - # 不close 不join 程序运行不了。。 - # pool.close() - # pool.join() + parse_page_auto(url, data_list, query, user) + if len(data_list) > 0: + for data in data_list: + msg.reply(f"{query} 新发现一个盗版商品-{data['title']}-{data['href']}\napp链接为:{data['app_link']}") + time.sleep(1) else: msg.reply('没有找到相关的信息 %s' %query) msg.reply('回复完毕, 请查看!') # 更新用户 是否已经爬取 是 。这里不保存信息的话也可以从数据库直接删除 - config_list.update({'user_name':user['user_name'], 'is_sure': 1, 'is_crawled': False},{"$set":{'is_crawled': True}}) - \ No newline at end of file + config_list.update({'user_name':user['user_name'], 'is_sure': 1, 'is_crawled': False},{"$set":{'is_crawled': True, 'crawled_time':datetime.datetime.now()}}) + + +def parse_page(url, data_list, query, user): + resp = requests.get(url, headers=headers).text + time.sleep(1) + html = etree.HTML(resp) + items = html.xpath("//div[contains(@class, 'ks-waterfall')]")[1:] + for item in items: + item_id = item.xpath('.//div[@class="item-pic"]/a/@href')[0].split('=')[-1] + data = { + 'title': item.xpath('.//div[@class="item-pic"]/a/@title')[0], + 'img': item.xpath('.//div[@class="item-pic"]/a/img/@src')[0], + 'href': 'https:' + item.xpath('.//div[@class="item-pic"]/a/@href')[0], + 'item_id': item_id, + 'desc': item.xpath('.//div[@class="item-brief-desc"]/text()')[0], + 'price': item.xpath('.//span[@class="price"]/em/text()')[0], + 'location': item.xpath('.//div[@class="item-location"]/text()')[0], + 'pub_time': parse_pub_time(item.xpath('.//span[@class="item-pub-time"]/text()')[0]), + 'app_link': 'https://market.m.taobao.com/app/idleFish-F2e/widle-taobao-rax/page-detail?wh_weex=true&wx_navbar_transparent=true&id=' + item_id + # 'is_sold': False + } + print(f"pub_time:{data['pub_time']}, crawled_time:{user['crawled_time']}") + # 这里最好判断一下关键词在不在里面。。。 设置个办公自动化 美容美体床、自动双面激光打印机都给我出来了。。。 + # 如果第一爬的话 就全部返回 第一次爬 + if query in data['title'] or query in data['desc']: + if data['pub_time'] > user['crawled_time']: + print(f"{query} 新发现一个盗版商品-{data['title']}-{data['href']}") + data_list.append(data) + + + + +def loop_reply(friend, user, config_list): + query_list = user['query_list'] + print(query_list) + # query = '麻瓜编程' + for query in query_list: + data_list = [] + urls = get_you_want(query) + print(urls) + if urls: + for url in urls: + parse_page(url, data_list, query, user) + if len(data_list) > 0: + for data in data_list: + friend.send(f"{query} 新发现一个盗版商品-{data['title']}-{data['href']}\napp链接为:{data['app_link']}") + time.sleep(1) + friend.send('-----------------------') + else: + friend.send('没有找到相关的信息 %s' %query) + friend.send('回复完毕, 请查看!') + # 更新用户 是否已经爬取 是 。这里不保存信息的话也可以从数据库直接删除 + config_list.update({'user_name':user['user_name'], 'is_sure': 1, 'is_crawled': True},{"$set":{'crawled_time':datetime.datetime.now()}}) + + From 8274186ed95ec7a3cff7fc4d1c6d74a7d255e13a Mon Sep 17 00:00:00 2001 From: BattlesSymphony <2603602530@qq.com> Date: Wed, 10 Apr 2019 20:22:14 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=8A=8A=E5=AE=9A=E6=97=B6=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=88=B0=E7=BA=BF=E7=A8=8B=E9=87=8C=E9=9D=A2=20?= =?UTF-8?q?=E4=B8=8D=E5=BD=B1=E5=93=8D=E4=B8=BB=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- send_msg_with_mongo.py | 29 +++++++++++++++-------------- xianyu.py | 8 +++++--- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/send_msg_with_mongo.py b/send_msg_with_mongo.py index 45886b9..b5db3f8 100644 --- a/send_msg_with_mongo.py +++ b/send_msg_with_mongo.py @@ -4,15 +4,14 @@ from pymongo import MongoClient from pymongo.collection import Collection from xianyu import return_result, loop_reply - - -bot = Bot(cache_path = True) -friend_list = bot.friends() - +import threading client = MongoClient() # 里面什么都不填的话, 默认localhost, 27017 killer_test = client['killer_test'] config_list = Collection(killer_test, 'config_list') +bot = Bot(cache_path = True) +print('Welcom to Killer\'s World') +friend_list = bot.friends() # 这里配置我们想要什么信息 # msg.text.startswith('搜索关键词:') 这个写在判断语句里, 也是我们想要的信息 WORD_DICT = { @@ -63,9 +62,7 @@ def auto_reply(msg): # 如果用户会回复的是1 就说明要 确认 搜索关键词 if msg.text == '1': - print('am in msg.text == 1') user = config_list.find_one({'user_name':msg.sender.name, 'is_sure': 1, 'is_crawled': True}) - print(' hi am here') if user is not None: return f'你之前提交过配置 配置的信息如下:\n搜索关键词:{"、".join(user["query_list"])}\n如需重新配置请回复 2' # else 证明数据库里没有这个用户的爬取数据 则判断用户是否已经设置过一次 @@ -103,14 +100,18 @@ def auto_accept_friends(msg): # 每日自动发送 # 测试用的 每隔5分钟。。。 -while True: - for user in config_list.find({}): - time_now = datetime.datetime.now() - if user['is_crawled'] == True and time_now > user['crawled_time'] + datetime.timedelta(minutes=5): - # if user['is_crawled'] == True and user['crawled_time'] + datetime.timedelta(hours=24) > time_now: - friend = bot.friends().search(name=user['user_name'])[0] - loop_reply(friend, user, config_list) +def _main(): + while True: + for user in config_list.find({}): + time_now = datetime.datetime.now() + if user['is_crawled'] == True and time_now > user['crawled_time'] + datetime.timedelta(minutes=5): + # if user['is_crawled'] == True and user['crawled_time'] + datetime.timedelta(hours=24) > time_now: + friend = bot.friends().search(name=user['user_name'])[0] + loop_reply(friend, user, config_list) + # 这里设计有缺陷 time.sleep(60) +t = threading.Thread(target=_main) +t.start() embed() # bot.join() \ No newline at end of file diff --git a/xianyu.py b/xianyu.py index c1d2099..2410c6d 100644 --- a/xianyu.py +++ b/xianyu.py @@ -87,6 +87,7 @@ def return_result(user, msg, config_list): for data in data_list: msg.reply(f"{query} 新发现一个盗版商品-{data['title']}-{data['href']}\napp链接为:{data['app_link']}") time.sleep(1) + msg.reply('-----------------------') else: msg.reply('没有找到相关的信息 %s' %query) msg.reply('回复完毕, 请查看!') @@ -125,6 +126,9 @@ def parse_page(url, data_list, query, user): def loop_reply(friend, user, config_list): + # 更新用户 是否已经爬取 是 。这里不保存信息的话也可以从数据库直接删除 + config_list.update({'user_name':user['user_name'], 'is_sure': 1, 'is_crawled': True},{"$set":{'crawled_time':datetime.datetime.now()}}) + query_list = user['query_list'] print(query_list) # query = '麻瓜编程' @@ -143,7 +147,5 @@ def loop_reply(friend, user, config_list): else: friend.send('没有找到相关的信息 %s' %query) friend.send('回复完毕, 请查看!') - # 更新用户 是否已经爬取 是 。这里不保存信息的话也可以从数据库直接删除 - config_list.update({'user_name':user['user_name'], 'is_sure': 1, 'is_crawled': True},{"$set":{'crawled_time':datetime.datetime.now()}}) - + From 8542a2eff31eb513f5f83d3929bdbedde1593b83 Mon Sep 17 00:00:00 2001 From: BattlesSymphony <2603602530@qq.com> Date: Mon, 15 Apr 2019 20:04:09 +0800 Subject: [PATCH 4/4] 'webpage' --- send_msg_with_mongo.py | 4 +++- wxpy.pkl | Bin 0 -> 233616 bytes 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 wxpy.pkl diff --git a/send_msg_with_mongo.py b/send_msg_with_mongo.py index b5db3f8..d7d3118 100644 --- a/send_msg_with_mongo.py +++ b/send_msg_with_mongo.py @@ -104,12 +104,14 @@ def _main(): while True: for user in config_list.find({}): time_now = datetime.datetime.now() - if user['is_crawled'] == True and time_now > user['crawled_time'] + datetime.timedelta(minutes=5): + if user['is_crawled'] == True and time_now > user['crawled_time'] + datetime.timedelta(minutes=1): # if user['is_crawled'] == True and user['crawled_time'] + datetime.timedelta(hours=24) > time_now: friend = bot.friends().search(name=user['user_name'])[0] loop_reply(friend, user, config_list) # 这里设计有缺陷 time.sleep(60) + + t = threading.Thread(target=_main) t.start() diff --git a/wxpy.pkl b/wxpy.pkl new file mode 100644 index 0000000000000000000000000000000000000000..52b74e9bebf5b15daba82f442e06fe923b5b37f2 GIT binary patch literal 233616 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

WW@#HK|(_b2ZfI~(p7s#HJ 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