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开发微信公众平台的方法详解【基于weixin-knife】
Jul 08 Python
python实现快速排序的示例(二分法思想)
Mar 12 Python
人生苦短我用python python如何快速入门?
Mar 12 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
Python绘制的二项分布概率图示例
Aug 22 Python
利用Python正则表达式过滤敏感词的方法
Jan 21 Python
Python 图像对比度增强的几种方法(小结)
Sep 25 Python
python requests抓取one推送文字和图片代码实例
Nov 04 Python
Python基础之变量基本用法与进阶详解
Jan 03 Python
AUC计算方法与Python实现代码
Feb 28 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
Mar 30 Python
最新Python idle下载、安装与使用教程图文详解
Nov 28 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
Syphon 使用方法
2021/03/03 冲泡冲煮
php 动态多文件上传
2009/01/18 PHP
UCenter Home二次开发指南
2009/05/28 PHP
PHP 5.6.11中CURL模块问题的解决方法
2016/08/08 PHP
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
原生js实现旋转木马轮播图效果
2017/02/27 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
解决layer.prompt无效的问题
2019/09/24 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
2020/11/06 Javascript
Python中用max()方法求最大值的介绍
2015/05/15 Python
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
Python基础之getpass模块详细介绍
2017/08/10 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
Python 元类实例解析
2018/04/04 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
简历上的自我评价
2014/02/03 职场文书
白酒市场营销方案
2014/02/25 职场文书
职工代表大会主持词
2014/04/01 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
大学生社会实践活动总结报告
2015/05/06 职场文书
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
Python 可迭代对象 iterable的具体使用
2021/08/07 Python
Python字符串格式化方式
2022/04/07 Python