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 相关文章推荐
tornado框架blog模块分析与使用
Nov 21 Python
Python threading多线程编程实例
Sep 18 Python
python魔法方法-自定义序列详解
Jul 21 Python
Python操作Access数据库基本步骤分析
Sep 19 Python
Request的中断和ErrorHandler实例解析
Feb 12 Python
pandas的排序和排名的具体使用
Jul 31 Python
python实现发送form-data数据的方法详解
Sep 27 Python
创建Shapefile文件并写入数据的例子
Nov 26 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
Dec 12 Python
Python基于Dlib的人脸识别系统的实现
Feb 26 Python
python speech模块的使用方法
Sep 09 Python
利用python绘制正态分布曲线
Jan 04 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 创建文件(文件夹)以及目录操作代码
2010/03/04 PHP
php iconv() : Detected an illegal character in input string
2010/12/05 PHP
从php核心代码分析require和include的区别
2011/01/02 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
2014/06/12 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
js open() 与showModalDialog()方法使用介绍
2013/09/10 Javascript
jQuery表单美化插件jqTransform使用详解
2015/04/12 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
避免jQuery名字冲突 noConflict()方法
2016/07/30 Javascript
js a标签点击事件
2017/03/30 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
浅谈react受控组件与非受控组件(小结)
2018/02/09 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
2018/08/24 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
[55:23]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python break语句详解
2014/03/11 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
python 实现全球IP归属地查询工具
2020/12/18 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
美国潜水装备、水肺潜水和浮潜设备商店:Leisure Pro
2018/08/08 全球购物
Otticanet意大利:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
人力资源管理专业应届生求职信
2013/09/28 职场文书
2014年公司迎新年活动方案
2014/02/24 职场文书
创建学习型党组织实施方案
2014/03/29 职场文书
解析redis hash应用场景和常用命令
2021/08/04 Redis
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL