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基于windows平台锁定键盘输入的方法
Mar 05 Python
浅析Python的web.py框架中url的设定方法
Jul 11 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
Sep 18 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
Oct 14 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
详解pyinstaller selenium python3 chrome打包问题
Oct 18 Python
在tensorflow中设置保存checkpoint的最大数量实例
Jan 21 Python
Pycharm配置PyQt5环境的教程
Apr 02 Python
Python绘制动态水球图过程详解
Jun 03 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
聊聊python中的循环遍历
Sep 07 Python
Python+pyaudio实现音频控制示例详解
Jul 23 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&amp;java(二)
2006/10/09 PHP
使用php伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
PHP调用wsdl文件类型的接口代码分享
2014/11/19 PHP
ucenter通信原理分析
2015/01/09 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
PHP等比例压缩图片的实例代码
2018/07/26 PHP
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
javascript获取web应用根目录的方法
2014/02/12 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
javascript无刷新评论实现方法
2015/05/13 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
jQuery中 $ 符号的冲突问题及解决方案
2016/11/04 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
hammer.js实现图片手势放大效果
2017/08/29 Javascript
原生js封装的ajax方法示例
2018/08/02 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
vue实现简单计算商品价格
2020/09/14 Javascript
Python中__init__和__new__的区别详解
2014/07/09 Python
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
删除python pandas.DataFrame 的多重index实例
2018/06/08 Python
Pycharm创建项目时如何自动添加头部信息
2019/11/14 Python
python绘制彩虹图
2019/12/16 Python
Python3和PyCharm安装与环境配置【图文教程】
2020/02/14 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
使用Python提取文本中含有特定字符串的方法示例
2020/12/09 Python
python FTP编程基础入门
2021/02/27 Python
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
canvas 实现 github404动态效果的示例代码
2017/11/15 HTML / CSS
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
新教师个人工作总结
2015/02/06 职场文书
幼儿园辞职信范文
2015/02/27 职场文书
vue中利用mqtt服务端实现即时通讯的步骤记录
2021/07/01 Vue.js