Python爬虫爬取百度搜索内容代码实例


Posted in Python onJune 05, 2020

这篇文章主要介绍了Python爬虫爬取百度搜索内容代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

搜索引擎用的很频繁,现在利用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="(.*?)" rel="external nofollow" rel="external nofollow" .*?>(.*?)</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')</a.*?href="(.*?)" rel="external nofollow" rel="external nofollow" .*?></h3.*?class="t".*?></table.*?class="result".*?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中执行shell命令的几个方法小结
Sep 18 Python
python比较两个列表是否相等的方法
Jul 28 Python
Ruby元编程基础学习笔记整理
Jul 02 Python
Python实现的凯撒密码算法示例
Apr 12 Python
Python基于SMTP协议实现发送邮件功能详解
Aug 14 Python
Python爬虫之UserAgent的使用实例
Feb 21 Python
Python利用itchat库向好友或者公众号发消息的实例
Feb 21 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
Mar 09 Python
PyQt使用QPropertyAnimation开发简单动画
Apr 02 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
Jun 17 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
Oct 16 Python
Python的代理类实现,控制访问和修改属性的权限你都了解吗
Mar 21 Python
python3读取autocad图形文件.py实例
Jun 05 #Python
Python实现加密接口测试方法步骤详解
Jun 05 #Python
基于python 将列表作为参数传入函数时的测试与理解
Jun 05 #Python
python 引用传递和值传递详解(实参,形参)
Jun 05 #Python
Python检测端口IP字符串是否合法
Jun 05 #Python
Python如何基于Tesseract实现识别文字功能
Jun 05 #Python
如何导出python安装的所有模块名称和版本号到文件中
Jun 05 #Python
You might like
2021年最新CPU天梯图
2021/03/04 数码科技
PHP中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
PHP检查URL包含特定字符串实例方法
2019/02/11 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
python数字图像处理实现直方图与均衡化
2018/05/04 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
Python获取统计自己的qq群成员信息的方法
2019/11/15 Python
Python操作redis和mongoDB的方法
2019/12/19 Python
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
女大学生自我鉴定
2013/12/09 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
Python图片验证码降噪和8邻域降噪
2021/08/30 Python
Pygame Rect区域位置的使用(图文)
2021/11/17 Python
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers