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条件变量之生产者与消费者操作实例分析
Mar 22 Python
Python命令行解析模块详解
Feb 01 Python
django query模块
Apr 20 Python
深入了解Python iter() 方法的用法
Jul 11 Python
python tkinter组件摆放方式详解
Sep 16 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
Oct 14 Python
pytorch制作自己的LMDB数据操作示例
Dec 18 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
Feb 17 Python
浅析python 字典嵌套
Sep 29 Python
python 利用Pyinstaller打包Web项目
Oct 23 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 Python
matplotlib相关系统目录获取方式小结
Feb 03 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
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
2014/04/17 PHP
PHP中单引号与双引号的区别分析
2014/08/19 PHP
laravel7学习之无限级分类的最新实现方法
2020/09/30 PHP
求解开jscript.encode代码的asp函数
2007/02/28 Javascript
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
jquery.validate的使用说明介绍
2013/11/12 Javascript
如何编写高质量JS代码(续)
2015/02/25 Javascript
js使用post 方式打开新窗口
2015/02/26 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
2016/06/12 Javascript
JavaScript仿微博发布信息案例
2016/11/16 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
2017/03/09 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
vue使用v-for实现hover点击效果
2018/09/29 Javascript
vue-cli脚手架的.babelrc文件用法说明
2020/09/11 Javascript
[50:44]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第二场 2月22日
2021/03/11 DOTA
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
总结Python中逻辑运算符的使用
2015/05/13 Python
Numpy数组的保存与读取方法
2018/04/04 Python
Python中的heapq模块源码详析
2019/01/08 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
python实现简单飞行棋
2020/02/06 Python
Python页面加载的等待方式总结
2021/02/28 Python
HTML5新标签兼容——&gt; 的两种方法
2018/09/12 HTML / CSS
信用社员工先进事迹材料
2014/02/04 职场文书
2014乡镇“三八”国际劳动妇女节活动总结
2014/03/01 职场文书
行政助理工作职责范本
2014/03/04 职场文书
食品采购员岗位职责
2014/04/14 职场文书
幼儿老师求职信
2014/06/30 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书
餐厅如何利用“营销策略”扭转亏本局面
2019/10/15 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
python3 sqlite3限制条件查询的操作
2021/04/07 Python
php png失真的原因及解决办法
2021/11/17 PHP