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 相关文章推荐
Jupyter中直接显示Matplotlib的图形方法
May 24 Python
Linux系统(CentOS)下python2.7.10安装
Sep 26 Python
小白入门篇使用Python搭建点击率预估模型
Oct 12 Python
使用Python画股票的K线图的方法步骤
Jun 28 Python
Python如何基于smtplib发不同格式的邮件
Dec 30 Python
tensorflow对图像进行拼接的例子
Feb 05 Python
python shell命令行中import多层目录下的模块操作
Mar 09 Python
浅谈matplotlib中FigureCanvasXAgg的用法
Jun 16 Python
Keras loss函数剖析
Jul 06 Python
sublime3之内网安装python插件Anaconda的流程
Nov 10 Python
彻底解决Python包下载慢问题
Nov 15 Python
python实现大文本文件分割成多个小文件
Apr 20 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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
php,ajax实现分页
2008/03/27 PHP
php 操作excel文件的方法小结
2009/12/31 PHP
php和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
PHP自定义错误用法示例
2016/09/28 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
2017/11/06 PHP
某人初学javascript的时候写的学习笔记
2010/12/30 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
JavaScript中window、doucment、body的解释
2013/08/14 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
Jquery解析json数据详解
2013/12/26 Javascript
jquery禁用右键示例
2014/04/28 Javascript
jquery中使用循环下拉菜单示例代码
2014/09/24 Javascript
JQuery select(下拉框)操作方法汇总
2015/04/15 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
JS简单获取当前年月日星期的方法示例
2017/02/07 Javascript
无循环 JavaScript(map、reduce、filter和find)
2017/04/08 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
关于layui toolbar和template的结合使用方法
2019/09/19 Javascript
vue点击自增和求和的实例代码
2019/11/06 Javascript
[04:11]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/01/30 DOTA
python自动重试第三方包retrying模块的方法
2018/04/24 Python
django框架实现一次性上传多个文件功能示例【批量上传】
2019/06/19 Python
Python selenium模拟手动操作实现无人值守刷积分功能
2020/05/13 Python
Python持续监听文件变化代码实例
2020/07/22 Python
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
华为python面试题
2016/05/03 面试题
公共事业管理本科生求职信
2013/10/07 职场文书
挂职思想汇报
2013/12/31 职场文书
小学安全汇报材料
2014/08/14 职场文书
学雷锋献爱心活动总结
2015/05/11 职场文书
入党培养人考察意见
2015/06/08 职场文书