python调用百度查询关键字_Python模拟搜索百度关键字
经常使用百度搜索一些资料,故用Python模拟发送请求。
!/usr/bin/env python
# coding=utf8
#####################
name : bd.py
author: jaysonzhang
date : 2013-08-04
#####################
import urllib2
import string
import urllib
import re
import random
#设置多个user_agents,防止百度限制IP
user_agents = ['Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20130406 Firefox/23.0', \
'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0', \
'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533+ \
(KHTML, like Gecko) Element Browser 5.0', \
'IBM WebExplorer /v0.94', 'Galaxy/1.0 [en] (Mac OS X 10.5.6; U; en)', \
'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)', \
'Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14', \
'Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) \
Version/6.0 Mobile/10A5355d Safari/8536.25', \
'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/28.0.1468.0 Safari/537.36', \
'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0; TheWorld)']
#组装url,搜索后返回结果
def baidu_search(keyword,pn):
p= {'wd': keyword}
#wd 代表关键字 pn 代表页码 cl=3 代表网页搜索
access_url=("http://www.baidu.com/s?"+urllib.urlencode(p)+"&pn={0}&cl=3&rn=10").format(pn)
#res=urllib2.urlopen(("http://www.baidu.com/s?"+urllib.urlencode(p)+"&pn={0}&cl=3&rn=10").format(pn))
res=urllib2.urlopen(access_url)
html=res.read()
return html
#查找匹配关键字的所有结果,追加的结果以列表返回
def getList(regex,text):
arr = []
res = re.findall(regex, text)
if res:
for r in res:
arr.append(r)
return arr
#查找匹配关键字的所有结果
def getMatch(regex,text):
res = re.findall(regex, text)
if res:
return res[0]
return ""
#清除搜索结果中标题多余的html标签
def clearTag(text):
p = re.compile(u'<[^>]+>')
retval = p.sub("",text)
return retval
#清除百度搜索后结果列表里存在的换行符和TAB符,以便下面正则表达式不用处理这些字符
def subContent(content):
content=re.sub('\n','',content)
content=re.sub('\t','',content)
return content
#开始搜索
def geturl(keyword,totalpage):
for page in range(totalpage):
print 'Now Page %d Result:' %(page+1)
pn=page*10+1
#开始搜索,从第一页开始
html = baidu_search(keyword,pn)
content = unicode(html, 'utf-8','ignore')
#clean \n \t
content = subContent(content)
#得到左侧搜索结果列表
arrList = getList(u"
.*?<\/a>", content)
#遍历左侧搜索结果列表
for item in arrList:
regex = u"
(.*?)<\/a>"
link = getMatch(regex,item)
#获取百度返回带加密串的url
url = link[0]
#获取标题
title = clearTag(link[1]).encode('utf8')
#获取搜索结果的URL真实地址
try:
domain=urllib2.Request(url)
r=random.randint(0,11)
domain.add_header('User-agent', user_agents[r])
domain.add_header('connection','keep-alive')
response=urllib2.urlopen(domain)
uri=response.geturl()
print "[%s]---->[%s]" %(title,uri)
except:
continue
if __name__=='__main__':
#输入要显示的总页数
totalpage=int( raw_input('input totalpage :') )
#输入关键字
key=u'%s' %( raw_input('input key word:') )
geturl(key,totalpage)
python调用百度查询关键字_Python模拟搜索百度关键字相关推荐
- Python调用API打造一个语音合成系统(百度智能云)
Python调用API打造一个语音合成系统(百度智能云) 将文字转换成各种不同味道(大叔型,萝莉音,精神小伙型等)的语音. 申请一个百度智能云账号 使用Python开发一款智能语音合成系统,所以需要P ...
- 数据库关键字搜索查询html,js实现搜索框关键字智能匹配代码
只要使用搜索引擎的朋友应该都有这样的体会,就是当在搜索框输入关键字的时候,会出现自能匹配现象,这绝对是非常好的用户体验,下面就是一段类似的代码,当然这里只是掩饰,所以只能匹配的数据都是本地固定好的,在 ...
- python调用带参函数_Python | 带有示例的函数调用类型
python调用带参函数 There are following types of function calls in python: python中有以下类型的函数调用: Call by value ...
- python调用opencv处理视频_Python调用OpenCV读写视频
最近因为经常对视频进行操作,所以记录下Python用opencv来读写视频的方法. 一.opencv读视频 python调用opencv来读视频比较简单,可以直接调用cv2.VideoCapture来 ...
- python 调用 c 生成数组_python调用c++传递数组的实例
如下所示: input = c_int * 4 # 实例化一个长度为2的整型数组 input = input() # 为数组赋值(input这个数组是不支持迭代的) input[0] = 11 inp ...
- python实现火车票查询工具_Python 实现一个火车票查询的工具
原标题:Python 实现一个火车票查询的工具 作者 sexycoder 本文转载自简书,转载需授权 使用 python 实现一个查询火车票的小工具 主要功能: 输入出发车站,到达车站,时间,然后返回 ...
- python调用c++动态库_Python调用C/C++动态链接库的方法
本文以实例讲解了Python调用C/C++ DLL动态链接库的方法,具体示例如下: 示例一: 首先,在创建一个DLL工程(本例创建环境为VS 2005),头文件: //hello.h #ifdef E ...
- python调用c的配置文件_python调用c
python一个非常的大的优点就是开发效率高,非常不好的缺点就是执行效率低:然而c语言有个则刚好相反.还有一点python的对源码的保护做不到,即使你用py2exe,pyinstaller这样的方法也 ...
- python调用cmd执行命令_python调用命令行,其中包含“echo”和“|”
参见英文答案 > piping in shell via Python subprocess module 4个 我试着用python调用命令行执行一些文件.但是,当有一个包含"ech ...
- python 调用外部程序 终端异常_python调用外部命令
python调用外部命令 os.system: 输出在终端上,捕捉不到 os.popen: 只能捕捉到标准输出,捕捉不到标准错误输出 os.popen2: 返回2个对象,一个是标准输入,一个是标准输出 ...
最新文章
- Python中的模块和包:模块的(动态)导入、__future__模块使用
- JVM——类加载机制
- U-Boot启动流程详解
- codeforces 677A-C语言解题报告
- block的使用(六)
- I帧、P帧和B帧的特点
- npm私服搭建与应用
- python检查exe运行是否报错_python打包成exe格式后,在部分机子上没法运行
- 常用元器件的识别与使用(电阻、电容、电感)
- c语言中char* 代表什么
- 数据清洗第六章—课后操作题
- 阿里云操作系统——飞天(Apsaras)
- Linux安装mysql 开启bingo日志
- 社会学转计算机博士,科学网—记我国社会计算学科第一位博士 - 王帅的博文
- HTTP协议入门 状态码大全
- 豆瓣高分JAVA书籍,值得收藏
- 如何去掉网格线及网格区域颜色
- python文件写入后,但文件还是空白
- 如何向icloud上传文件_怎么把文件放进苹果icloud
- 2.2.1 Nginx高性能负载均衡器
热门文章
- 华为交换机专用堆叠电缆连线指导
- 全面剖析《自己动手写操作系统》第五章---makefile文件
- 计算机组成原理 精选习题集
- Grasshopper GHPython 报错: Solution exception:找不到方法: “Void Microsoft.Scripting.Utils
- CentOS7 安装 oracle 10g
- 微电网逆变器VF控制simulink仿真模型。 采用解耦的电压电流双闭环控制, 输出电压电流波形质量良好
- Silverlight常见问题解决方法
- VB脚本:快速入门教程
- 古体字与简体字对照表_简体字繁体字对照表?
- 定制自己的Unity场景编辑工具界面(一)