0°

用Python打造属于自己的搜索引擎

内容预览:
  • 原文始发于微信公众号(Python绿色通道):用Python打造属于自己的搜索...~
  • 现在发个广告赚个小小的咖啡钱就不乐意了~
  • 如果想永远得到服务,肯定需要给予赞助吧!不然怎么得到持续的服务~

原文始发于微信公众号(Python绿色通道):用Python打造属于自己的搜索引擎

写在前面

昨天接了一个IT行业培训广告,有极小部分读者取关了,虽然体量很小,但我还是有点痛心!

经常熬夜更新公众号,累积收到的打赏连一杯咖啡都买不了。现在发个广告赚个小小的咖啡钱就不乐意了。我也不强求打赏,但我发个小小的培训广告对读者是没有任何影响的,却被取关了。如果想永远得到服务,肯定需要给予赞助吧!不然怎么得到持续的服务。读者不赞助,为什么也不让从别人那里获得赞助呢?


我接广告也有自己的原则,我只接IT培训类的广告,并且口碑要好,我需要对每一个读者负责,不会乱接广告的!


最后要说一下:能接到广告的公众号,一般都是有质量的公众号,要想公众号持续输出有质量的文章,肯定需要有一些赞助,这是相辅相成的,大家都是成年人,这个道理都懂!

进入主题

这里我是用Flask框架来做的一个简单的搜索引擎,只用于学习,勿做它用!

且看效果:


用Python打造属于自己的搜索引擎

用Python打造属于自己的搜索引擎

主要就是熟悉一下Flask的基本使用,再复习一下爬虫的东西

打开Pycharm,然后New Project 选择Flask模块,然后会自动安装Flask库的,这里就不赘述了

先介绍一下Flask, Flask是Python中的一个轻量web框架,能满足我们一般开发需求

运行Flask

#这里可以帮助你声明路由
app = Flask(__name__)


#这里是调用入口
if __name__ == '__main__':
   app.run()

应用启动

#coding:utf-8

from flask import request
from flask import Flask,  render_template
from spiderData import search_info

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

# 这里声明Flask的路由
app = Flask(__name__)

@app.route('/')
def index():
   # 打印出Hello world
   return 'Hello world'
   # 这里可以跳转到模块页,注意这里需要把html页面放在模板文件夹中
   #return render_template('/search.html')
   # 这里跳转可以把需要传入的数据传入到指定网页中,并用{{name}}来获取数据
  # return render_template('/result.html',name = 'zhangsan',)

@app.route('/search')
def search():
   # 使用Flask的request来获取get请求传来的参数
   keyword = request.args.get('wd')
   print keyword
   result = search_info(keyword)
   # 这里跳转可以把需要传入的数据传入到指定网页中,并用{{name}}来获取数据
   return render_template('/result.html',data = result,num = len(result))

# 这里可以传入数据<name>
@app.route('/user/<name>')
def user(name):
   return '<h1>hello,%s!' % name

if __name__ == '__main__':
   app.run()

获取数据

爬取百度搜索的内容页,这里我只获取到第一页数据,由于下一页数据并没有规律,只能通过Selenium来点击下一页获取,为不影响使用体验,这里我暂时没有做下一页数据.有兴趣的朋友可以自己做一下.

# coding:utf-8
import requests
import re
import json
import urllib
from lxml import etree
from flask import render_template


def search_info(keyword):
   results_list = []
   # 这里可以研究得出关键是后面变化的关键词
   url = 'https://www.baidu.com/s?word={}'.format(keyword)
   print '----------------{}'.format(url)
   headers = {
       'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4620.400 QQBrowser/9.7.13014.400'
   }

   response = requests.get(url,headers = headers)
   response.encoding = 'utf-8'
   #打印出得到的结果
  # print response.text
   source = etree.HTML(response.text)
   results =  source.xpath('//*[@id]/@data-tools')
   for r in results:
       try:
           # 这里需要对 xpath取取的结果进行转码:<type 'lxml.etree._ElementUnicodeResult'> 转成str
           # 然后再把字符串转换成json,再取值
           str = json.loads(r.encode('utf-8'))
           results_list.append(str)
           print str['title'],str['url']
       except Exception as e:
           continue
   return results_list

开始请求

search.html页面(排版工具对html代码不支持故这里不放)
这里需要注意一下action,我这里/search 指定到路由中search方法,然后并调用里面的方法,method是get

显示搜索结果

见result.html (排版工具对html代码不支持故这里不放)

代码Github地址:https://github.com/pythonchannel/a_flask

Flask简单使用参考一下这个文章: http://www.jb51.net/article/65197.htm

推荐阅读:

一起来Python项目实战,约吗?

做微信公众号100天了

用Python来找你喜欢的妹子(二)

用Python来找合适的妹子(一)

使用Python自动化发布文章(二)

使用Python自动化发布文章:(一)

Python爬虫:使用Python动态爬取冯大辉老师微博,再用词云分析

Python爬虫:动态爬取QQ说说并生成词云,分析朋友状况

Python爬虫:学习Selenium并使用Selenium模拟登录知乎

Python爬取大量数据时,如何防止IP被封

Python爬虫:现学现用xpath爬取豆瓣音乐


的Python之旅

用Python打造属于自己的搜索引擎

长按,识别二维码,关注公众号



目前10000+人已关注加入我们

用Python打造属于自己的搜索引擎 用Python打造属于自己的搜索引擎 用Python打造属于自己的搜索引擎 用Python打造属于自己的搜索引擎 用Python打造属于自己的搜索引擎 用Python打造属于自己的搜索引擎 用Python打造属于自己的搜索引擎 用Python打造属于自己的搜索引擎

用Python打造属于自己的搜索引擎 用Python打造属于自己的搜索引擎 用Python打造属于自己的搜索引擎 用Python打造属于自己的搜索引擎 用Python打造属于自己的搜索引擎 用Python打造属于自己的搜索引擎 用Python打造属于自己的搜索引擎 用Python打造属于自己的搜索引擎


关注公众号即可领取5T学习资料: 数据结构, 小程序, 前端, PHP, Java ,Android, Python, 大数据, 人工智能等!


最后 :大家也可以公众号主页上回复 加群 拉你进群学习,一个纯粹的Python学习环境!

和大佬一起学习网络安全知识

以上就是:用Python打造属于自己的搜索引擎 的全部内容

本站部分内容来源于互联网和用户投稿,如有侵权请联系我们删除,谢谢^^
Email:[email protected]


0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论