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的randrange()方法使用教程
May 15 Python
Python中使用haystack实现django全文检索搜索引擎功能
Aug 26 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
Oct 07 Python
Python 判断文件或目录是否存在的实例代码
Jul 19 Python
Python3实现对列表按元组指定列进行排序的方法分析
Dec 22 Python
python禁用键鼠与提权代码实例
Aug 16 Python
python的range和linspace使用详解
Nov 27 Python
python循环嵌套的多种使用方法解析
Nov 29 Python
python爬虫添加请求头代码实例
Dec 28 Python
python利用os模块编写文件复制功能——copy()函数用法
Jul 13 Python
详解Python魔法方法之描述符类
May 26 Python
Python Pandas pandas.read_sql_query函数实例用法分析
Jun 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
jquery 问答知识整理
2010/02/11 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
AngularJS整合Springmvc、Spring、Mybatis搭建开发环境
2016/02/25 Javascript
JS实现为排序好的字符串找出重复行的方法
2016/03/02 Javascript
javascript实现仿百度图片的瀑布流加载效果
2016/04/20 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
微信小程序checkbox组件使用详解
2018/01/31 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
Python操作json数据的一个简单例子
2014/04/17 Python
深入解析Python中的list列表及其切片和迭代操作
2016/03/13 Python
pycharm设置注释颜色的方法
2018/05/23 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
对Python3中列表乘以某一个数的示例详解
2019/07/20 Python
python-tornado的接口用swagger进行包装的实例
2019/08/29 Python
python可视化text()函数使用详解
2020/02/11 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
2020/04/22 Python
python空元组在all中返回结果详解
2020/12/15 Python
CSS3弹性盒模型开发笔记(一)
2016/04/26 HTML / CSS
Melijoe时尚童装德国官网:Melijoe德国
2016/09/03 全球购物
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
实习生自荐信范文分享
2013/11/27 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
爱护草坪标语
2014/06/24 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
2015年共青团工作总结
2015/05/15 职场文书
借款民事起诉状范文
2015/05/19 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书
2019年公司快递收发管理制度模板
2019/11/20 职场文书
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript
不要在HTML中滥用div
2021/05/08 HTML / CSS
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL