写在前面
昨天接了一个IT行业培训广告,有极小部分读者取关了,虽然体量很小,但我还是有点痛心!
经常熬夜更新公众号,累积收到的打赏连一杯咖啡都买不了。现在发个广告赚个小小的咖啡钱就不乐意了。我也不强求打赏,但我发个小小的培训广告对读者是没有任何影响的,却被取关了。如果想永远得到服务,肯定需要给予赞助吧!不然怎么得到持续的服务。读者不赞助,为什么也不让从别人那里获得赞助呢?
我接广告也有自己的原则,我只接IT培训类的广告,并且口碑要好,我需要对每一个读者负责,不会乱接广告的!
最后要说一下:能接到广告的公众号,一般都是有质量的公众号,要想公众号持续输出有质量的文章,肯定需要有一些赞助,这是相辅相成的,大家都是成年人,这个道理都懂!
进入主题
这里我是用Flask框架来做的一个简单的搜索引擎,只用于学习,勿做它用!
且看效果:
主要就是熟悉一下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))
# 这里可以传入数据
@app.route('/user/')
def user(name):
return '
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取取的结果进行转码: 转成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