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发送email的3种方法
Apr 28 Python
关于django 数据库迁移(migrate)应该知道的一些事
May 27 Python
pytorch + visdom 处理简单分类问题的示例
Jun 04 Python
对python requests的content和text方法的区别详解
Oct 11 Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 Python
python数据处理 根据颜色对图片进行分类的方法
Dec 08 Python
numpy中的ndarray方法和属性详解
May 27 Python
Django 项目重命名的实现步骤解析
Aug 14 Python
Python 读取 YUV(NV12) 视频文件实例
Dec 09 Python
什么是Python中的匿名函数
Jun 02 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
Mar 04 Python
基于tensorflow权重文件的解读
May 26 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
web server使用php生成web页面的三种方法总结
2013/10/28 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
2013/09/05 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
jquery text(),val(),html()方法区别总结
2013/11/04 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
使用jquery.qrcode生成彩色二维码实例
2014/08/08 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
理解python多线程(python多线程简明教程)
2014/06/09 Python
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
Python提取Linux内核源代码的目录结构实现方法
2016/06/24 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
python ctypes库2_指定参数类型和返回类型详解
2019/11/19 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
django 将自带的数据库sqlite3改成mysql实例
2020/07/09 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
大学生农村教师实习自我鉴定
2013/09/21 职场文书
音乐专业应届生教师求职信
2013/11/04 职场文书
岗位职责定义及内容
2013/11/08 职场文书
初中生自我鉴定
2014/02/04 职场文书
资源工程专业毕业生求职信
2014/02/27 职场文书
《特殊的葬礼》教学反思
2014/04/27 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android