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实现进程间通信简单实例
Jul 23 Python
python optparse模块使用实例
Apr 09 Python
python实现二叉查找树实例代码
Feb 08 Python
详解TensorFlow在windows上安装与简单示例
Mar 05 Python
将字典转换为DataFrame并进行频次统计的方法
Apr 08 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
python 机器学习之支持向量机非线性回归SVR模型
Jun 26 Python
Django分页功能的实现代码详解
Jul 29 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 Python
Python基础之字符串常见操作经典实例详解
Feb 26 Python
Python新手学习raise用法
Jun 03 Python
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
Apr 13 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
Redis构建分布式锁
2017/03/28 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
为数据添加append,remove功能
2006/10/03 Javascript
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
javascript函数中的3个高级技巧
2016/09/22 Javascript
JS实现倒计时(天数、时、分、秒)
2016/11/16 Javascript
Angular2整合其他插件的方法
2018/01/20 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
2020/12/15 Vue.js
[01:17:12]职来职往完美电竞专场
2014/09/18 DOTA
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
使用python生成目录树
2018/03/29 Python
python绘制多个曲线的折线图
2020/03/23 Python
使用python实现简单五子棋游戏
2019/06/18 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
解决python gdal投影坐标系转换的问题
2020/01/17 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
详解python中的异常和文件读写
2021/01/03 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
努比亚手机官网:nubia
2016/10/06 全球购物
《锄禾》教学反思
2014/04/08 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
医学会议开幕词
2016/03/03 职场文书