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爬虫
Dec 25 Python
Python 登录网站详解及实例
Apr 11 Python
Python中if elif else及缩进的使用简述
May 31 Python
centos6.8安装python3.7无法import _ssl的解决方法
Sep 17 Python
Python实现的爬取百度贴吧图片功能完整示例
May 10 Python
django中间键重定向实例方法
Nov 10 Python
Python requests模块session代码实例
Apr 14 Python
Jupyter notebook如何实现指定浏览器打开
May 13 Python
完美解决ARIMA模型中plot_acf画不出图的问题
Jun 04 Python
Python常用外部指令执行代码实例
Nov 05 Python
pandas 数据类型转换的实现
Dec 29 Python
Python利用zhdate模块实现农历日期处理
Mar 31 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
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
如何对PHP程序中的常见漏洞进行攻击
2006/10/09 PHP
PHP7.1新功能之Nullable Type用法分析
2016/09/26 PHP
PHP 获取指定地区的天气实例代码
2017/02/08 PHP
php和asp语法上的区别总结
2019/05/12 PHP
深入解析PHP底层机制及相关原理
2020/12/11 PHP
JavaScript中“+=”的应用
2007/02/02 Javascript
!DOCTYPE声明对JavaScript的影响分析
2010/04/12 Javascript
JSONP 跨域共享信息
2012/08/16 Javascript
jquery弹出框的用法示例(一)
2013/08/26 Javascript
ExtJS的拖拽效果示例
2013/12/09 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
RequireJS入门一之实现第一个例子
2015/09/30 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
2017/03/10 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
2020/05/09 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
python安装numpy和pandas的方法步骤
2019/05/27 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
《画杨桃》教学反思
2014/04/13 职场文书
室内趣味活动方案
2014/08/24 职场文书
地球上的星星观后感
2015/06/02 职场文书
观看焦裕禄观后感
2015/06/09 职场文书
2019餐饮行业创业计划书!
2019/06/27 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
Java移除无效括号的方法实现
2021/08/07 Java/Android
python对文档中元素删除,替换操作
2022/04/02 Python
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏