首先要使用的第类库有 urllib下的request  以及urllib下的parse  以及 time包  random包

之后我们定义一个名叫BaiduSpider类用来爬取信息

属性有 url:用来爬取的网址             headers:请求头

class BaiduSpider(object):
def __init__(self):
self.url = 'http://tieba.baidu.com/f?kw={}&pn={}'
self.headers = {'User-Agent':'Win7:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'}

之后我们定义三个方法   不涉及清洗数据

获取页面

 #获取页面
def get_page(self,url):
#定义请求对象
req = request.Request(url=url,headers=self.headers)
#发起请求
res = request.urlopen(req)
#获取相应对象
html = res.read().decode('utf-8', 'ignore')
return html

保存数据

#保存数据
def write_page(self,filename,html):
#将数据保存到本地
with open(filename,'w',encoding='utf-8') as f:
f.write(html)

主函数

#主函数
def main(self):
name = input('请输入贴吧名:>>>>')
start = int(input('请输入起始页'))
end = int(input('请输入终止页'))
for page in range(start,end+1):
#拼接URL地址 'http://tieba.baidu.com/f?kw{}&pn={}'
#进行编码 将中文字符编码为url地址编码
kw = parse.quote(name)
#获取当前页数
pn = (page-1)*50
#进行url地址的拼接
url = self.url.format(kw,pn)
#获取相应
html = self.get_page(url)
filename = '{}-第{}页.html'.format(name,page)
self.write_page(filename,html)
#提示
print('第{}页爬取成功'.format(page))
#控制爬取速度
time.sleep(random.randint(1,3))

最后 所有的代码展示如下

#导入模块
from urllib import request,parse
import time
import random class BaiduSpider(object):
def __init__(self):
self.url = 'http://tieba.baidu.com/f?kw={}&pn={}'
self.headers = {'User-Agent':'Win7:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'} #获取页面
def get_page(self,url):
#定义请求对象
req = request.Request(url=url,headers=self.headers)
#发起请求
res = request.urlopen(req)
#获取相应对象
html = res.read().decode('utf-8', 'ignore')
return html #解析数据
def parse_page(self):
pass #保存数据
def write_page(self,filename,html):
#将数据保存到本地
with open(filename,'w',encoding='utf-8') as f:
f.write(html) #主函数
def main(self):
name = input('请输入贴吧名:>>>>')
start = int(input('请输入起始页'))
end = int(input('请输入终止页'))
for page in range(start,end+1):
#拼接URL地址 'http://tieba.baidu.com/f?kw{}&pn={}'
#进行编码 将中文字符编码为url地址编码
kw = parse.quote(name)
#获取当前页数
pn = (page-1)*50
#进行url地址的拼接
url = self.url.format(kw,pn)
#获取相应
html = self.get_page(url)
filename = '{}-第{}页.html'.format(name,page)
self.write_page(filename,html)
#提示
print('第{}页爬取成功'.format(page))
#控制爬取速度
time.sleep(random.randint(1,3)) if __name__ == '__main__':
spider = BaiduSpider()
spider.main()

一个非常非常简单的爬虫就完成了 让我们看一下运行效果截图:

html文件打开后 与我们正常打开的网页并没有太大的差别

Python爬虫之简单的爬取百度贴吧数据的更多相关文章

  1. Python爬虫实战二之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...

  2. 转 Python爬虫实战二之爬取百度贴吧帖子

    静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...

  3. Python爬虫:为什么你爬取不到网页数据

    前言: 之前小编写了一篇关于爬虫为什么爬取不到数据文章(文章链接为:Python爬虫经常爬不到数据,或许你可以看一下小编的这篇文章), 但是当时小编也是胡乱编写的,其实里面有很多问题的,现在小编重新发 ...

  4. Python开发简单爬虫(二)---爬取百度百科页面数据

    一.开发爬虫的步骤 1.确定目标抓取策略: 打开目标页面,通过右键审查元素确定网页的url格式.数据格式.和网页编码形式. ①先看url的格式, F12观察一下链接的形式;② 再看目标文本信息的标签格 ...

  5. Python爬虫:通过关键字爬取百度图片

    使用工具:Python2.7 点我下载 scrapy框架 sublime text3 一.搭建python(Windows版本) 1.安装python2.7 ---然后在cmd当中输入python,界 ...

  6. Python 基础语法+简单地爬取百度贴吧内容

    Python笔记 1.Python3和Pycharm2018的安装 2.Python3基础语法 2.1.1.数据类型 2.1.1.1.数据类型:数字(整数和浮点数) 整数:int类型 浮点数:floa ...

  7. Python爬虫入门教程 42-100 爬取儿歌多多APP数据-手机APP爬虫部分

    1. 儿歌多多APP简单分析 今天是手机APP数据爬取的第一篇案例博客,我找到了一个儿歌多多APP,没有加固,没有加壳,没有加密参数,对新手来说,比较友好,咱就拿它练练手,熟悉一下Fiddler和夜神 ...

  8. 【学习笔记】Python 3.6模拟输入并爬取百度前10页密切相关链接

    [学习笔记]Python 3.6模拟输入并爬取百度前10页密切相关链接 问题描述 通过模拟网页,实现百度搜索关键词,然后获得网页中链接的文本,与准备的文本进行比较,如果有相似之处则代表相关链接. me ...

  9. python爬虫:了解JS加密爬取网易云音乐

    python爬虫:了解JS加密爬取网易云音乐 前言 大家好,我是"持之以恒_liu",之所以起这个名字,就是希望我自己无论做什么事,只要一开始选择了,那么就要坚持到底,不管结果如何 ...

随机推荐

  1. MessagePack Java 0.6.X 快速开始指南 - 安装

    0.6.x 版本的 MessagePack 已经过期被淘汰了.如果你现在开始使用 MessagePack 话,请不要使用这个版本. 我们再这里保留 0.6.x 版本的内容主要用于参考用途. 最新的 M ...

  2. docker运行jpress

    1.前提安装好docker mkdir docker//建立工作文件夹 cd docker 2.下载tomcat镜像和jpress开源项目 docker pull docker pull hub.c. ...

  3. 教材代码完成情况测试P186(课上测试)

    一.任务详情 0 在Ubuntu中用自己的有位学号建一个文件,教材p186 Example8_8 1.修改p186 Example8_8中代码,密钥password不用手动输入,使用Random产生随 ...

  4. spring的IOC——依赖注入的两种实现类型

    一.构造器注入: 构造器注入,即通过构造函数完成依赖关系的设定.我们看一下spring的配置文件: <constructor-arg ref="userDao4Oracle" ...

  5. Ajax学习--理解 Ajax 及其工作原理

    Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的缩写. 下面是 Ajax 应用程序所用到的基本技术:• HTML 用于建立 Web 表单并确定应用 ...

  6. HOG + SVM(行人检测, opencv实现)

    HOG+SVM流程 1.提取HOG特征 灰度化 + Gamma变换(进行根号求解) 计算梯度map(计算梯度) 图像划分成小的cell,统计每个cell梯度直方图 多个cell组成一个block, 特 ...

  7. Raspbian 编译安装 PHP 7.2

    原文地址:Raspbian 编译安装 PHP 7.2 0x00 配置 开发板: Raspberry Pi 3B 系统: Raspbian 2019-04-08 stretch 0x01 下载源码 20 ...

  8. mysql允许外网访问 和修改mysql 账号密码

    mysql的root账户,我在连接时通常用的是localhost或127.0.0.1,公司的测试服务器上的mysql也是localhost所以我想访问无法访问,测试暂停. 解决方法如下: 1,修改表, ...

  9. Linux安装和配置java

    安装文件:jdk-6u45-linux-x64.bin 1.root用户在/usr/local目录下建立java目录 2.拷贝jdk-6u45-linux-x64.bin到/usr/local/jav ...

  10. selenium之css selector定位

    什么是CSS Selector? Css Selector定位实际就是HTML的Css选择器的标签定位 工具 Css Selector的练习建议大家安装火狐浏览器(49及以下版本)后,下载插件Fire ...