用python正则获取通过搜索引擎过来的搜索关键字
🕑 by pyList at 2012-09-04 13:25
简单记录一下某个页面来路的搜索关键字,用 python 正则获取request.headers的referer字段。
referer 分析
先看看几个搜索引擎的referer:
http://www.baidu.com/s?q=%E5%AE%9D%E5%AE%9D%E6%88%90%E9%95%BF%E6%97%A5%E8%AE%B0&sa=%E7%99%BE%E5%BA%A6+%E6%90%9C%E7%B4%A2&prog=aff&client=&channel=&hl=zh-CN&source=sdo_sb&wd=%E5%AE%9D%E5%AE%9D%E6%88%90%E9%95%BF%E6%97%A5%E8%AE%B0
http://www.baidu.com/s?wd=%E5%AE%9D%E5%AE%9D%E6%88%90%E9%95%BF%E6%97%A5%E8%AE%B0&rsp=0&f=1&oq=%E5%AE%9D%E5%AE%9D%E6%88%90%E9%95%BF%E6%97%A5%E8%AE%B0%E5%8D%9A%E5%AE%A2&tn=baiduhome_pg&ie=utf-8&rsv_ers=xn1&rs_src=0
http://www.baidu.com/s?wd=%E5%AE%9D%E5%AE%9D%E6%88%90%E9%95%BF%E6%97%A5%E8%AE%B0&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&n=2&inputT=1873
http://www.baidu.com/s?word=%E5%AE%9D%E5%AE%9D%E6%88%90%E9%95%BF%E6%97%A5%E8%AE%B0&tn=sitehao123&ie=utf-8
http://www.google.com.hk/search?q=%E5%AE%9D%E5%AE%9D%E6%88%90%E9%95%BF%E6%97%A5%E8%AE%B0&sa=Google+%E6%90%9C%E7%B4%A2&prog=aff&client=&channel=&hl=zh-CN&source=sdo_sb&wd=
http://www.google.com/#hl=en&newwindow=1&output=search&sclient=psy-ab&q=%E5%AE%9D%E5%AE%9D%E6%88%90%E9%95%BF%E6%97%A5%E8%AE%B0&oq=%E5%AE%9D%E5%AE%9D%E6%88%90%E9%95%BF%E6%97%A5%E8%AE%B0&gs_l=hp.12...909.909.0.2701.1.1.0.0.0.0.149.149.0j1.1.0.les%3B..0.0...1c.4IJDxm3b3Og&pbx=1&bav=on.2,or.r_gc.r_pw.r_qf.&fp=956c9e2b545c788f&biw=1280&bih=684
http://www.360sou.com/s?ie=utf-8&src=hao_phome&_re=1&q=%E5%AE%9D%E5%AE%9D%E6%88%90%E9%95%BF%E6%97%A5%E8%AE%B0
http://www.sogou.com/web?query=%B1%A6%B1%A6%B3%C9%B3%A4%C8%D5%BC%C7&_asf=www.sogou.com&_ast=1346601462&w=01019900&p=40040100&sut=2405&sst0=1346601461745
http://www.yahoo.cn/s?src=8003&vendor=100101&source=ycnhp_search_button&q=%E5%AE%9D%E5%AE%9D%E6%88%90%E9%95%BF%E6%97%A5%E8%AE%B0
http://cn.bing.com/search?q=%E5%AE%9D%E5%AE%9D%E6%88%90%E9%95%BF%E6%97%A5%E8%AE%B0%E6%9C%AC&go=&qs=n&form=QBRE&pq=%E5%AE%9D%E5%AE%9D%E6%88%90%E9%95%BF%E6%97%A5%E8%AE%B0%E6%9C%AC&sc=0-6&sp=-1&sk=
http://www.youdao.com/search?q=sae+blog
http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CB8QFjAA&url=http%3A%2F%2Fgobaby.sinaapp.com%2F&ei=YYtFUMPJF_GNiAeN34GADQ&usg=AFQjCNEIdqv8dKxhRFo1LxYK7TjmcAHnXQ&sig2=2NcnpgwihH0gKCcs8o3RIw
总结
- 搜索引擎host:baidu|google|360sou|sogou|yahoo|bing|youdao
- url的GET字段:wd|word|q|query|pq
- 当点击百度搜索结果页面下方的“相关搜索”时会有一个“oq”字段,其值应该是old query string吧。
识别
python正则实现提取搜索关键字的代码:
import re
QR_RE = re.compile(r'(baidu|google|360sou|sogou|yahoo|bing|youdao).+?[\?\&]{1}(wd|word|q|query|pq)=([^&]+)', re.I)
def get_search_kw(referer):
if referer:
matchobj = QR_RE.search(referer)
if matchobj:
try:
return unquote(matchobj.group(3)).decode('utf-8')
except:
pass
return ''
注意,当用Chrome打开 https://www.google.com 搜索时其referer字段不包含搜索关键字。
本文网址: https://pylist.com/t/1346736336 (转载注明出处)
如果你有任何建议或疑问可以在下面 留言
发表第一条评论!
相关推荐
小工具
标签
api
搜索引擎
网址
提交
自动
os
popen
python
超时
解决
苦短
城铁
guido
我用
print
中文
终端
正确
numpy
库画
matplotlib
线图
sha1
php
hmac
签名
格式
转换
常见
时间
sae
pil
image
高质量
gzip
开启
方法
判断
当前
是否
之坑
files
golang
open
服务
虚拟机
virtualbox
很慢
网络
bbr
openwrt
路由
sqlite3
连接池
nginx
上传
服务器
中断
文件
多线程
监听
变量
u盘
mac
diskutil
格式化
顽固
小试
japronto
web
最快
访问速度
vps
加速
硬件加速
ubnt
er
固件
默认值
struct
设置
google
身份验证
authenticator
迁移
手机
xor
解密
加密
低功耗
爬虫
组装
chrome
server
ubuntu
debian
浏览
failed
load
devtools
sourcemap
自动更新
microsoft
关闭
app
store
登录
未知
静音
风扇
主机
笔记本
改造
微信
尝鲜
视频
体验
cpu
查看
温度
webdriver
微博
selenium
gnu
linux
安装
系统启动
usb
编译
宅家
坑记
屏幕
动手
quic
抢先
最近发表
- Chrome 控制台 DevTools failed to load SourceMap 警告的消除方法
- Mac 关闭 Microsoft 自动更新
- Mac 登录 App Store 出现“发生了未知错误”的解决方法
- 老笔记本改造为无风扇静音主机方案
- 自己组装21瓦低功耗家庭爬虫、文件、web服务器
- 微信视频号尝鲜体验
- Ubuntu/Debian 查看CPU温度的方法
- 在Ubuntu/debian Server 系统使用Chrome 无头浏览模式
- 换手机后 Google 身份验证器 Google Authenticator 数据迁移的简单方法
- 使用Golang selenium WebDriver 自动登录微博
- 在 Ubuntu 或其它 GNU/Linux 系统下安装 Debian
- Mac 下制作 USB ubuntu/debian 系统启动、安装盘的几种方法
- ubuntu/debian 下自行编译 OpenWRT 固件
- 宅家自己动手换手机屏幕掉坑记
- 路由 UBNT ER-X 官方固件升级及开启硬件加速的方法
- 在 Nginx 和 Golang web 上抢先体验 QUIC
最近浏览
- Golang 服务之坑:too many open files
- VirtualBox 虚拟机里网络很慢的解决方法
- Openwrt 路由上开启BBR
- python SQLite3 连接池
- Nginx 服务器上传大文件经常中断的解决方法
- python多线程监听变量
- 在终端使用Mac diskutil 命令格式化顽固U盘
- 小试python 最快的web 框架: japronto
- 开启BBR 加速小VPS访问速度
- 路由 UBNT ER-X 官方固件升级及开启硬件加速的方法
- go struct 设置默认值
- 换手机后 Google 身份验证器 Google Authenticator 数据迁移的简单方法
- 用python 实现XOR 加密解密的方法
- 自己组装21瓦低功耗家庭爬虫、文件、web服务器
- python 常见的时间格式转换
- 在Ubuntu/debian Server 系统使用Chrome 无头浏览模式