开发工具:PyCharm

开发环境:python3.6 + flask + requests

开发流程:

1. 启动一个web服务

from flask import Flask
app = Flask(__name__)
if __name__ == '__main__':
app.run(host='127.0.0.1', port=6666)

2. 增加app.route装饰器

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
return 'Hello World'
if __name__ == '__main__':
app.run(host='127.0.0.1', port=5000)

3. 增加index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>仿百度搜索</title>
<style type="text/css">
.align-center{
position:fixed;left:30%;top:30%;margin-left:width/2;margin-top:height/2;
}
</style>
</head>
<body>
<form action="/s" method="get">
<div class="align-center">
<input type="search" name="key"> <input type="submit" value="搜索"><br>
</div>
</form>
</body>
</html>

index.html

4. 增加 render_template

from flask import Flask
from flask import render_template
app = Flask(__name__) @app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run(host='127.0.0.1', port=5000)

5. 增加返回结果

@app.route('/s')
def search():
return 'Hello World'

6. spider.py

import requests

def getBdMsg(keyword):
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"}
res = requests.get('https://www.baidu.com/s?wd={}'.format(keyword), headers = headers).text
return res

7. 获取搜索框关键字,通过爬虫程序搜索,获得百度搜索结果

from flask import Flask
from flask import render_template
from flask import request
from spider import getBdMsg
app = Flask(__name__) @app.route('/')
def index():
return render_template('index.html') @app.route('/s')
def search():
keyword = request.args.get("key")
text = getBdMsg(keyword)
return text if __name__ == '__main__':
app.run(host='127.0.0.1', port=5000)

8. 修改spider.py的返回结果,通过链式replace(),替换百度图标和“百度一下”

return res.replace('//www.baidu.com/img/baidu_jgylogo3.gif','static/images/google.png').replace('百度一下', 'Google')

附完整源码:

# -*- coding: utf-8 -*-
# @Time : 2018/3/19 12:46
# @Author : TanRong
# @Software: PyCharm
# @File : search.py from flask import Flask
from flask import render_template
from spider import getBdMsg
from flask import request # Flask(__name__).run()
app = Flask(__name__) #app.route装饰器
@app.route('/')
def index():
return render_template('index.html') @app.route('/s')
def search():
keyword = request.args.get('key')
text = getBdMsg(keyword)
return text if __name__ == '__main__':
app.run()

search.py

# -*- coding: utf-8 -*-
# @Time : 2018/3/21 18:07
# @Author : TanRong
# @Software: PyCharm
# @File : spider.py import requests def getBdMsg(keyword):
# 必须加上请求头,这样才是浏览器请求,不然无返回结果
# F12 - NetWork - Requeset Headers - UserAgent
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"}
res = requests.get('https://www.baidu.com/s?wd={}'.format(keyword), headers = headers).text
return res.replace('//www.baidu.com/img/baidu_jgylogo3.gif','static/images/google.png').replace('百度一下','Google').replace('百度','Google') #链式replace() if __name__ == '__main__':
getBdMsg('风景')

spider.py

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>仿百度搜索</title>
<style type="text/css">
.align-center{
position:fixed;left:30%;top:30%;margin-left:width/2;margin-top:height/2;
}
</style>
</head>
<body>
<form action="/s" method="get">
<div class="align-center">
<input type="search" name="key"> <input type="submit" value="搜索"><br>
</div>
</form>
</body>
</html>

index.html

15行Python 仿百度搜索引擎的更多相关文章

  1. 15行python代码,帮你理解令牌桶算法

    本文转载自: http://www.tuicool.com/articles/aEBNRnU   在网络中传输数据时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送,令牌桶算法 ...

  2. 15行python代码实现人脸识别

    方法一:face_recognition import cv2 import face_recognition img_path = "C:/Users/CJK/Desktop/1.jpg& ...

  3. 仿百度壁纸客户端(五)——实现搜索动画GestureDetector手势识别,动态更新搜索关键字

    仿百度壁纸客户端(五)--实现搜索动画GestureDetector手势识别,动态更新搜索关键字 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Frag ...

  4. 百度搜索引擎关键字URL采集爬虫优化行业定投方案高效获得行业流量-代码篇

    需要结合:<百度搜索引擎关键字URL采集爬虫优化行业定投方案高效获得行业流量--笔记篇> 一起看. #!/user/bin/env python # -*- coding:utf-8 -* ...

  5. WPF仿百度Echarts人口迁移图

    GitHub地址:https://github.com/ptddqr/wpf-echarts-map/tree/master 关于大名鼎鼎的百度Echarts我就不多说了 不了解的朋友直接看官方的例子 ...

  6. 一个 11 行 Python 代码实现的神经网络

    一个 11 行 Python 代码实现的神经网络 2015/12/02 · 实践项目 · 15 评论· 神经网络 分享到:18 本文由 伯乐在线 - 耶鲁怕冷 翻译,Namco 校稿.未经许可,禁止转 ...

  7. js仿百度文库文档上传页面的分类选择器_第二版

    仿百度文库文档上传页面的多级联动分类选择器第二版,支持在一个页面同一时候使用多个分类选择器. 此版本号把HTML,CSS,以及图片都封装到"category.js"中.解决因文件路 ...

  8. 仿百度壁纸客户端(六)——完结篇之Gallery画廊实现壁纸预览已经项目细节优化

    仿百度壁纸客户端(六)--完结篇之Gallery画廊实现壁纸预览已经项目细节优化 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Fragment 仿百度 ...

  9. JAVA仿百度分页

    最近在做一个仿百度网盘的网页小应用,找到了一个优雅简洁的分页插件,和百度搜索的分页很相似,对他进行了二次封装,拿出来跟大家分享下 插件源码 /** * This jQuery plugin displ ...

随机推荐

  1. Python-数据类型 主键auto_increment

    MySQL数据操作: DML========================================================在MySQL管理软件中,可以通过SQL语句中的DML语言来实 ...

  2. DML_DDL_触发器

    Oracle触发器1-介绍Oracle官方参考:PL/SQL Language Referenc->9 PL/SQL TriggerReasons to Use Trigger:■ Automa ...

  3. Float与二进制之间的转化(Java实现)

    在线转化:http://www.binaryconvert.com import java.text.DecimalFormat; public class SinglePrecision { //浮 ...

  4. 【进阶1-5期】JavaScript深入之4类常见内存泄漏及如何避免(转)

    这是我在公众号(高级前端进阶)看到的文章,现在做笔记 https://mp.weixin.qq.com/s/RZ8Lpkyk8lz6z5H8Q8SiEQ 垃圾回收算法 常用垃圾回收算法叫做**标记清除 ...

  5. 修改 sql 提示符信息:

    Last login: Thu Dec 8 19:18:08 2016 from 192.168.242.1 [root@localhost ~]# su - oracle [oracle@local ...

  6. Confluence 6 "net.sf.hibernate.PropertyValueException: not-null" 相关问题解决

    如果你遇到了下面的错误信息,例如: ERROR [Importing data task] [confluence.importexport.impl.ReverseDatabinder] endEl ...

  7. SpringData使用与整合

    SpringData 整合源码:链接: https://pan.baidu.com/s/1_dDEEJoqaBTfXs2ZWsvKvA 提取码: cp6s(jar包自行寻找) author:Simpl ...

  8. CentOS 7 安装 Redis

    1.Redis 下载地址:https://redis.io/download 2.上传到服务器指定文件夹 ,我这边传到了根目录下 /mysoft 这个目录下 解压  tar  -zxvf redis- ...

  9. Python关于类的实操

    实操一:总结 1.什么是绑定到对象的方法,如何定义,如何调用,给谁用?有什么特性? 2.什么是绑定到类的方法,如何定义,如何调用,给谁用?有什么特性? 3.什么是解除绑定的函数,如何定义,如何调用,给 ...

  10. tomcat 报错处理

    一.tomcat报错找不到资源集市 原因:tomcat的配置文件sever.xml 里的 docbase配置被Eclispe修改了 解决方法:修改回来 <Context docBase=&quo ...