python实现提取百度搜索结果的方法


Posted in Python onMay 19, 2015

本文实例讲述了python实现提取百度搜索结果的方法。分享给大家供大家参考。具体实现方法如下:

# coding=utf8
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)']
def baidu_search(keyword,pn):
  p= {'wd': keyword} 
  res=urllib2.urlopen(("http://www.baidu.com/s?"+urllib.urlencode(p)+"&pn={0}&cl=3&rn=100").format(pn))
  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 ""
def clearTag(text):
  p = re.compile(u'<[^>]+>')
  retval = p.sub("",text)
  return retval
def geturl(keyword):
  for page in range(10):
    pn=page*100+1
    html = baidu_search(keyword,pn)
    content = unicode(html, 'utf-8','ignore')
    arrList = getList(u"<table.*?class=\"result\".*?>.*?<\/a>", content)
    for item in arrList:
      regex = u"<h3.*?class=\"t\".*?><a.*?href=\"(.*?)\".*?>(.*?)<\/a>"
      link = getMatch(regex,item)
      url = link[0]
      #获取标题
      #title = clearTag(link[1]).encode('utf8')
      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 uri
      except:
        continue
if __name__=='__main__':
  geturl('python')

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
Feb 24 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
May 26 Python
Sublime开发python程序的示例代码
Jan 24 Python
Python打印输出数组中全部元素
Mar 13 Python
JavaScript实现一维数组转化为二维数组
Apr 17 Python
python将视频转换为全字符视频
Apr 26 Python
python实现支付宝转账接口
May 07 Python
python如何实现代码检查
Jun 28 Python
python 申请内存空间,用于创建多维数组的实例
Dec 02 Python
Python日期格式和字符串格式相互转换的方法
Feb 18 Python
python字典和json.dumps()的遇到的坑分析
Mar 11 Python
python实现监听键盘
Apr 26 Python
在Python中操作字符串之rstrip()方法的使用
May 19 #Python
Python映射拆分操作符用法实例
May 19 #Python
Python中的rjust()方法使用详解
May 19 #Python
python抓取百度首页的方法
May 19 #Python
Python递归遍历列表及输出的实现方法
May 19 #Python
Python中random模块用法实例分析
May 19 #Python
用Python操作字符串之rindex()方法的使用
May 19 #Python
You might like
PHP获取中国时间(上海时区时间)及美国时间的方法
2017/02/23 PHP
详解Yii2高级版引入bootstrap.js的一个办法
2017/03/21 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
javascript 鼠标拖动图标技术
2010/02/07 Javascript
jQuery实现的仿select功能代码
2015/08/19 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
JS新包管理工具yarn和npm的对比与使用入门
2016/12/09 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
Python的Django REST框架中的序列化及请求和返回
2016/04/11 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
python 字典操作提取key,value的方法
2019/06/26 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
2019/06/28 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
Python requests设置代理的方法步骤
2020/02/23 Python
Django bulk_create()、update()与数据库事务的效率对比分析
2020/05/15 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
美国名牌太阳镜折扣网站:Eyedictive
2017/05/15 全球购物
建筑工程管理专业自荐信范文
2013/12/28 职场文书
幼儿园师德演讲稿
2014/05/06 职场文书
预防传染病方案
2014/06/14 职场文书
保险专业求职信
2014/07/07 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技
table不让td文字溢出操作方法
2022/12/24 HTML / CSS