业界动态
Django+爬虫实现一个在线题库搜索引擎(考试资料网/上学吧)
2024-11-01 00:35
这是模块未合并之前的代码,可能无法正常使用,但是可以学习用,有比较详细的注释

Django+爬虫实现一个在线题库搜索引擎(考试资料网/上学吧)

import requests import re import json import random import copy 此程序是上学吧APP端抓包分析的数据,APP名为搜题 数据组成: keyword=查找的关键字 id=题的id username就是电话号码,找个接码平台注册一个就好 userid就是用户id,抓包能看见你自己的id 如果不登录的话,它的token是一直在变化的,而登录后token则不会变化 重要!!!: iden参数 此参数就是限制客户端每天免费查询的次数,经试验,用随机数随便构造一下就好了 其余参数都不是很重要 token = 'CCA7FFF7E4F7C18DDD234633592FA996' def search_question(keyword): # 根据题目关键字去查询,返回查到的题目ID,如果异常,则返回None questions_id = [] search_url = 'http://app.shangxueba.com/ask/search.ashx' # 查询的api search_data = { 'source': '3', # 不知道 'username': '18207729487', # 手机号 'token': token, # 抓包的token,和手机号也是一一对应的 'iden': 'E3A4F83A7142675845EDB759FFC9FF06_xxx', # 这个不用构造,最后获取答案时才需要 'keyword': keyword, # 查询的关键词 'GlobalAppType': '6', # 不知道 'type': 'IPHONE100', # 手机类型,没啥用 'page': '1', # 查询信息的页数,一般第一页就比较准确了 'userid': '6807647', # 用户ID,和手机号是一一对应的 search_response = requests.post(search_url, data=search_data) # 模拟http发送搜索请求 if search_response.status_code == 200: # 判断是否请求正常 text = json.loads(text) # 解析返回的json数据 return {'status': 'error:', 'message': 'search question id error ,error code:' + search_response.status_code} # 如果异常,返回异常状态码 if text['code'] == 'success': # 即使请求状态码为200,可能依旧请求失败,会返回一个状态码,success或者fail for question in text['list']: questions_id.append(question['id']) return {'status': 'ok', 'message': questions_id} # ,questions_title,questions_content return {'status': 'fail', 'message': 'search:' + text['msg']} def get_info(id): # 根据题目的ID去获取题目的信息,如果获取成功,则返回完整的题目的内容,题目+选项,失败则返回None get_info_url = 'http://app.shangxueba.com/ask/getinfo.ashx' 'iden': 'E3A4F83A7142475845EDB759FAC9FF06_xxx', search_response = requests.post(url=get_info_url, data=data) return {'status': 'error:', 'message': 'get_info:' + text['msg']} questions_context = text['data']['AskInfo']['context'] return {'status': 'ok', 'message': questions_context} def get_best(id): # 根据题目的id去查询题目的答案,成功则返回答案(+解析),失败则返回None get_best_url = 'http://app.shangxueba.com/ask/getzuijia.ashx' iden = '' for i in range(5): # 五位随机数,一天应该用不完了,需要可以多加几位,一个iden可以免费4次 iden += str(random.randrange(1, 10)) 'iden': iden + 'E3A4F83A74445EDB759FFC9FF06_xxx', # 随机iden search_response = requests.post(url=get_best_url, data=data) return {'status': 'error:', 'message': 'get_best:' + text['msg']} # print('get_best:' + text['msg']) first_question_id = text['data']['ZJAnswer'][0]['Context'] # 获取第一个最佳答案 return {'status': 'ok', 'message': first_question_id} except Exception as e: print(e) first_question_id = None # 如果没有答案 return {'status': 'error:', 'message': first_question_id} def sxb(question): # system('color 70') # question = input('请输入要搜索的问题:') questions_context = [] context_answer_list = [] questions_answer = [] # print(context_answer_list) questions_id = search_question(question) # 搜索问题,返回ID列表 if questions_id['status'] == 'ok': # 查询是否成功 id_list = questions_id['message'] for id in id_list: context = get_info(id) # 获取题目内容 if context['status'] == 'ok': # 是否获取到题目内容 # print(context['message']+'+++++') questions_context.append(context['message']) continue # 获取题目失败就查找下一个ID的题目和答案 # return {'status': 'error', 'message': context['message']} # print('Get context error...') answer = get_best(id) # print(answer, answer['message']) if answer['status'] == 'ok': # 是否获取到题目答案 questions_answer.append(answer['message']) continue # return {'status': 'error', 'message': 'Get answer error...'} # print('Get answer error...') length = len(questions_answer) for l in range(length - 1): # 最后一条数据有问题,去掉了 context = re.sub('((<br/>)+)|(请帮忙给出正确答案和分析,谢谢!)', ' ', questions_context[l], re.S)    以上就是本篇文章【Django+爬虫实现一个在线题库搜索引擎(考试资料网/上学吧)】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/news/7907.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多   
最新新闻
“撒旦”人血鞋?碰瓷新疆棉花的耐克,又开始喊冤了?
继主动碰瓷新疆棉花把自己搞得股价大跌之后耐克秉承着“no zuo no die”的精神又开始暗搓搓搞“阴间操作”限量发售含人血的“撒
tiktok怎么搭建外网 详细教程及步骤
TikTok怎么搭建外网(详细教程及步骤)TikTok是一款非常流行的短视频社交应用程序,它在全球范围内拥有数亿用户。在使用TikTok的
《以案释法》步数越多,收益越高?别被“走路也能赚钱”的理财广告忽悠了
  走路也能赚到钱的理财  “丑的人还在睡觉,美的人已经跑出一杯星巴克了。”2016年的一天,一个女孩晒出的朋友圈截图引起了
如何用生意参谋算出同行店铺真实销售额
怎么经过生意顾问算出同行店肆实在销售额?大多数在淘宝天猫工作过的人都知道,他们的背景显现了同行商铺的买卖数据,这被称为买
一款最近比较火的网站统计分析系统,易分析具有什么样的功能呢?
一、产品简介北京普艾斯科技有限公司成立于2009年,服务客户1000+,包括电商、金融、保险、政务服务等行业。私有化部署,全渠道
向佐快乐大本营2024年精彩回顾:四年时光共欢笑
张大大谢娜力捧下的综艺新星张大大一位在娱乐圈中颇具人气的主持人他的成名之路离不开谢娜的提携回顾张大大的成名之路可以说谢娜
PingTools app
《PingTools app》是一款非常好用的实用工具软件,软件内拥有丰富的功能,包含了包括浏览器扫描等。使用非常简单,直接下载安装
抖音能看到谁搜索过自己吗?
尊敬的用户,您好。针对抖音平台是否能够查看谁搜索过自己的问题,我们需要做一些详细说明。首先,根据我们了解到的情况,在抖音
什么是人工智能“语料库”?为什么每个人都在谈论它?
编者按:比尔盖茨(Bill Gates)、Reddit 首席执行官和其他科技领袖越来越多地谈论“语料库”,现在是时候了解它是“何方神圣”
LED行业词语中英对应
1、led 灯具构成英文led 球泡灯:led bulbLed 贴片灯珠:SMD LEDLed驱动电源:led driver隔离电源:isolated driver非隔离电源:
本企业新闻

点击拨打: