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中的Numpy入门教程
Apr 26 Python
Python实现设置windows桌面壁纸代码分享
Mar 28 Python
Python中正则表达式的详细教程
Apr 30 Python
Django中更新多个对象数据与删除对象的方法
Jul 17 Python
Python基于pillow判断图片完整性的方法
Sep 18 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
Jun 15 Python
python下载文件记录黑名单的实现代码
Oct 24 Python
Python微信操控itchat的方法
May 31 Python
python实现爬取百度图片的方法示例
Jul 06 Python
python logging添加filter教程
Dec 24 Python
python使用Word2Vec进行情感分析解析
Jul 31 Python
Python3 类型标注支持操作
Jun 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
php session安全问题分析
2011/06/24 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
用JavaScript调用WebService的示例
2008/04/07 Javascript
jQuery DOM操作小结与实例
2010/01/07 Javascript
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
获取select元素被选中的文本内容的js代码
2014/01/29 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
老生常谈angularjs中的$state.go
2017/04/24 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
angular多语言配置详解
2019/05/16 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
Python中字典的基础知识归纳小结
2015/08/19 Python
python使用KNN算法手写体识别
2018/02/01 Python
python中的变量如何开辟内存
2018/06/26 Python
Python Tkinter实例——模拟掷骰子
2020/10/24 Python
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
PHP高级工程师面试问题推荐
2013/01/18 面试题
司机岗位职责
2013/11/15 职场文书
前厅部经理岗位职责范文
2014/02/04 职场文书
《小壁虎借尾巴》教学反思
2014/02/16 职场文书
亲子读书活动方案
2014/02/22 职场文书
旅游节目策划方案
2014/05/26 职场文书
机械机修工岗位职责
2014/08/03 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
酒店员工手册范本
2015/05/14 职场文书
志愿服务心得体会
2016/01/15 职场文书
MySQL一些常用高级SQL语句
2021/07/03 MySQL
用JS写一个发布订阅模式
2021/11/07 Javascript