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代码检查工具pylint 让你的python更规范
Sep 05 Python
python笔记(2)
Oct 24 Python
python中的装饰器详解
Apr 13 Python
Python安装官方whl包和tar.gz包的方法(推荐)
Jun 04 Python
Python 中pandas.read_excel详细介绍
Jun 23 Python
pytorch中tensor的合并与截取方法
Jul 26 Python
Django model序列化为json的方法示例
Oct 16 Python
Python中字符串与编码示例代码
May 20 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
May 27 Python
Django项目主urls导入应用中views的红线问题解决
Aug 10 Python
python学生信息管理系统实现代码
Dec 17 Python
Python数据分析之pandas读取数据
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代码
2007/03/03 PHP
PHP extract 将数组拆分成多个变量的函数
2010/06/30 PHP
php共享内存段示例分享
2014/01/20 PHP
php短址转换实现方法
2015/02/25 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
2013/04/26 Javascript
js实现的标题栏新消息闪烁提示效果
2014/06/06 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
python服务器端收发请求的实现代码
2014/09/29 Python
Python列表计数及插入实例
2014/12/17 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
Python 高级专用类方法的实例详解
2017/09/11 Python
TensorFlow 滑动平均的示例代码
2018/06/19 Python
基于Django框架利用Ajax实现点赞功能实例代码
2018/08/19 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
python爬虫用request库处理cookie的实例讲解
2021/02/20 Python
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
环境科学专业大学生自荐信格式
2013/09/21 职场文书
转预备党员政审材料
2014/02/06 职场文书
python实现简单的井字棋
2021/05/26 Python
Python 发送SMTP邮件的简单教程
2021/06/24 Python