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中的json与pickle
Jul 19 Python
彻底理解Python list切片原理
Oct 27 Python
python实现简易版计算器
Jun 22 Python
Django 路由系统URLconf的使用
Oct 11 Python
简单了解Django应用app及分布式路由
Jul 24 Python
提升python处理速度原理及方法实例
Dec 25 Python
Tensorflow训练MNIST手写数字识别模型
Feb 13 Python
django 利用Q对象与F对象进行查询的实现
May 15 Python
Python通过文本和图片生成词云图
May 21 Python
python如何变换环境
Jul 21 Python
基于Python实现简单学生管理系统
Jul 24 Python
使用Python爬虫爬取小红书完完整整的全过程
Jan 19 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
初探PHP5
2006/10/09 PHP
深入PHP变量存储的详解
2013/06/13 PHP
php版小黄鸡simsimi聊天机器人接口分享
2014/01/26 PHP
php判断并删除空目录及空子目录的方法
2015/02/11 PHP
php生成数字字母的验证码图片
2015/07/14 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
2015/12/01 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
javascript获取url上某个参数的方法
2013/11/08 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
jquery基础教程之deferred对象使用方法
2014/01/22 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
使用node.js 获取客户端信息代码分享
2014/11/26 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
Vue slot用法(小结)
2018/10/22 Javascript
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
详解vue 中 scoped 样式作用域的规则
2020/09/14 Javascript
python里大整数相乘相关技巧指南
2014/09/12 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
python处理excel绘制雷达图
2019/10/18 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
编辑硕士自荐信范文
2013/11/27 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
驳回起诉裁定书
2015/05/19 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书
如何使用php生成zip压缩包
2021/04/21 PHP