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 相关文章推荐
浅析python 中__name__ = '__main__' 的作用
Jul 05 Python
Python常用模块用法分析
Sep 08 Python
python删除特定文件的方法
Jul 30 Python
Ubuntu下安装PyV8
Mar 13 Python
Python实现压缩和解压缩ZIP文件的方法分析
Sep 28 Python
一个月入门Python爬虫学习,轻松爬取大规模数据
Jan 03 Python
python+matplotlib绘制饼图散点图实例代码
Jan 20 Python
Python基于递归算法求最小公倍数和最大公约数示例
Jul 27 Python
PyQt 图解Qt Designer工具的使用方法
Aug 06 Python
对pytorch中的梯度更新方法详解
Aug 20 Python
python运用pygame库实现双人弹球小游戏
Nov 25 Python
Django框架之中间件MiddleWare的实现
Dec 30 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+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
PHP缓存技术的使用说明
2011/08/06 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
用javascript做拖动布局的思路
2008/05/31 Javascript
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
详解Node.js:events事件模块
2016/11/24 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
简单的三步vuex入门
2018/05/20 Javascript
ios设备中angularjs无法改变页面title的解决方法
2018/09/13 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
Django ORM框架的定时任务如何使用详解
2017/10/19 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
Python操作json的方法实例分析
2018/12/06 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
np.dot()函数的用法详解
2020/01/17 Python
python help函数实例用法
2020/12/06 Python
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
普天C++笔试题
2016/03/20 面试题
怎样有效的进行自我评价
2013/10/06 职场文书
医学院校毕业生自荐信范文
2014/01/01 职场文书
工作服管理制度范本
2015/08/06 职场文书
linux下安装redis图文详细步骤
2021/12/04 Redis
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python