手把手教你使用Python打造一款简易搜索引擎
时间:2022-07-22
本文章向大家介绍手把手教你使用Python打造一款简易搜索引擎,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
/1 前言/
相信大家在知识共享的这个年代一定在网上下载了很多的文件保存以供日后有时间学习吧,毕竟硬盘空间也比较有限,下面我们就来说说我们要做的这个项目,就是搜索盘搜里的资源然后进行下载。
/2 项目目标/
实现搜索自己想要的文件,并且下载文件。
/3 项目准备/
使用sublime text 3 开发。因为此次我们需要用到交互式来完成操作,所以需要在sublime text 3 下载一个sublimeREPL插件来进行辅助开发。
/4 项目实现/
1、打开盘搜,并随意打开一个链接,如下图所示:
2、然后可以看到这个画面,如下图所示。
3、此时这个网页地址为:
http://www.pansou.com/?q=成化十四年
由此可以看出它是一个get请求。于是requests.get搞起来,这样我们就实现了第一步,搜索。于是,可以这样写代码:
import requests
def down(content):
content=input('请输入要下载的文件名')
rep=requests.get('http://www.pansou.com/?q='+str(content))
rep.encoding='utf-8'
4、这样就得到了上个页面中的网页源代码,我们通过搜索相关关键字发现竟然搜不到:
5、那么这是怎么回事?原来这是因为ajax异步加载导致的部分关键代码显示不出来。这可就犯难了,换句话说这就触及到我的知识点盲区了。
因为小编并未学过前端,只知道有ajax这回事,哪里知道这个问题怎么产生怎么解决了。不过不用怕,还好小编有一个大绝招,那就是找接口。我找呀找,终于被我找到了,哎,功夫不负苦心人。如图所示:
6、发现这是个json格式的所以我们现在可以将他进行读取,如图:
7、不容易啊,json的坑很多,于是决定用字典。哈哈哈哈,果然适合自己的才是最香的。
找到了这些东西我们就可以把他们提取出来啦,这样我们就提取出了第一页的所有结果,要想提取第二页的结果只需将p的结果改为2即可。
最终的结果,如图:
8、接下来我们强化下程序,让他具有交互功能,供用户选择。
9、但是我们了解到callback一般都是可变的函数,所以真正能用上的就只有两个参数,q和p,于是:
这样就完成了指定页面的文件浏览。
下载的话也比较简单,直接将链接复制到浏览器中即可,这样就完成了一个最简单的搜索引擎了。
/5 小结/
1、不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。
2、本文基于Python网络爬虫,利用爬虫库,打造了一款简易的Python搜索引擎。
3、实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。
------------------- End -------------------
- 零基础学编程019:生成群文章目录
- 零基础学编程026:学什么编程语言最有前途?
- C学习笔记(1)-结构体、预处理与多文件结构程序设计
- 零基础学编程035:群发邮件并不难
- 零基础学编程024:如何快速学会SQL?
- 机器学习的基础讲解:神经网络
- 零基础学编程023:用with实现优雅地释放资源
- Start transaction not working with Revit 2014
- 零基础学编程034:解决一个pandas问题
- ShellExecute 启动外部程序 参数详细介绍
- 零基础学编程033:字符串的split拆分与join连接
- 零基础学编程032:生成二维码
- C#,一些非常简单但应该知道的知识点
- C#神奇的扩展方法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python能在浏览器能运行吗
- Python使用OpenPyXL处理Excel表格
- php如何比较两个浮点数是否相等详解
- keras 回调函数Callbacks 断点ModelCheckpoint教程
- Mac下快速搭建PHP开发环境步骤详解
- PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
- Ajax+PHP实现的模拟进度条功能示例
- python实例化对象的具体方法
- PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
- YII框架关联查询操作示例
- Keras之fit_generator与train_on_batch用法
- django美化后台django-suit的安装配置操作
- python读取excel进行遍历/xlrd模块操作
- 浅谈Keras的Sequential与PyTorch的Sequential的区别
- python 制作python包,封装成可用模块教程