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 相关文章推荐
使用70行Python代码实现一个递归下降解析器的教程
Apr 17 Python
python中根据字符串调用函数的实现方法
Jun 12 Python
Django Admin 实现外键过滤的方法
Sep 29 Python
解决Python中pandas读取*.csv文件出现编码问题
Jul 12 Python
Django Form 实时从数据库中获取数据的操作方法
Jul 25 Python
Numpy的简单用法小结
Aug 28 Python
Python字符串格式化输出代码实例
Nov 22 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
Jan 09 Python
基于pygame实现童年掌机打砖块游戏
Feb 25 Python
python闭包与引用以及需要注意的陷阱
Sep 18 Python
pycharm中选中一个单词替换所有重复单词的实现方法
Nov 17 Python
python机器学习创建基于规则聊天机器人过程示例详解
Nov 02 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
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
php使用exec shell命令注入的方法讲解
2013/11/12 PHP
php查找任何页面上的所有链接的方法
2013/12/03 PHP
php修改上传图片尺寸的方法
2015/04/14 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
javascript对象的使用和属性操作示例详解
2014/03/02 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
2015/01/05 Javascript
js使用post 方式打开新窗口
2015/02/26 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
使用JS中的Replace()方法遇到的问题小结
2017/10/20 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
JavaScript 几种循环方式以及模块化的总结
2020/09/03 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
python抓取网页中的图片示例
2014/02/28 Python
python删除服务器文件代码示例
2018/02/09 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
Java byte数组操纵方式代码实例解析
2020/07/22 Python
Django中template for如何使用方法
2021/01/31 Python
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
探矿工程师自荐信
2014/01/24 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
二胎满月酒致辞
2015/07/29 职场文书
2019年个人工作总结范文(3篇)
2019/08/27 职场文书
Python机器学习之基础概述
2021/05/19 Python
python Django框架快速入门教程(后台管理)
2021/07/21 Python