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基于动态规划算法解决01背包问题实例
Dec 06 Python
Python 25行代码实现的RSA算法详解
Apr 10 Python
Python 修改列表中的元素方法
Jun 26 Python
python正则表达式匹配[]中间为任意字符的实例
Dec 25 Python
Python实现的拉格朗日插值法示例
Jan 08 Python
python 猴子补丁(monkey patch)
Jun 26 Python
Python循环中else,break和continue的用法实例详解
Jul 11 Python
python实现电子书翻页小程序
Jul 23 Python
Python While循环语句实例演示及原理解析
Jan 03 Python
Python识别处理照片中的条形码
Nov 16 Python
解决Pytorch dataloader时报错每个tensor维度不一样的问题
May 28 Python
Python NumPy灰度图像的压缩原理讲解
Aug 04 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
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
PHP实现懒加载的方法
2015/03/07 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
Thinkphp5结合layer弹窗定制操作结果页面
2017/07/07 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
让广告代码不再影响你的网页加载速度
2006/07/07 Javascript
jquery 单引号和双引号的区别及使用注意
2013/07/31 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
一个CSS+jQuery实现的放大缩小动画效果
2014/02/19 Javascript
触屏中的JavaScript事件分析
2015/02/06 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
JS监听组合按键思路及实现过程
2020/04/17 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
[06:06]2018DOTA2亚洲邀请赛主赛事第四日战况回顾 全明星赛欢乐上演
2018/04/07 DOTA
python中的协程深入理解
2019/06/10 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
关于python中导入文件到list的问题
2020/10/31 Python
CHARLES & KEITH加拿大官网:新加坡时尚品牌
2020/03/26 全球购物
什么是命名空间(NameSpace)
2015/11/24 面试题
自荐信格式范文
2013/10/07 职场文书
自主招生自荐信指南
2014/02/04 职场文书
优秀大学生自荐信
2014/06/09 职场文书
企业标语口号
2014/06/10 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
秋季运动会开幕词
2015/01/28 职场文书
中班教师个人总结
2015/02/05 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
导游词之青城山景区
2019/09/27 职场文书
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL
postgresql之greenplum字符串去重拼接方式
2023/05/08 PostgreSQL