首先要使用的第类库有 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文件打开后 与我们正常打开的网页并没有太大的差别

最新文章

  1. C#中去除字符串空格的三种方法
  2. 使用递归方法遍历TreeView的节点如配置则勾选
  3. bzoj1091: [SCOI2003]切割多边形
  4. HDMI IP学习笔记
  5. 【译】Java中的枚举
  6. @ResponseBody返回不能正确接收
  7. Android UI系列-----时间、日期、Toasts和进度条Dialog
  8. Asp.Net应用运行原理
  9. xmind的第四天笔记
  10. Android ListView 第一次设置Adapter时候getView调用多次
  11. Unity Texture 2D Compress
  12. 基于Hbase数据的Mapreduce程序环境开发
  13. linux mail 配置
  14. MyEclipse里项目部署到tomcat上之后,tomcat webpps文件夹里为什么找不到这个项目
  15. U盘装系统系列三—-ghost系统安装教程
  16. Java 多线程编程两个简单的例子
  17. uva757 - Gone Fishing(馋)
  18. poj 2828 Buy Tickets(树状数组 | 线段树)
  19. Python机器学习笔记 使用scikit-learn工具进行PCA降维
  20. 清北学堂part1

热门文章

  1. POJ 3723 征兵问题(最小生成树算法的应用)
  2. 16位masm汇编实现记忆化递归搜索斐波那契数列第50项
  3. HDU 6669 Game
  4. js 获取系统时间:年月日 星期 时分秒(动态)
  5. 数据加密之RSA
  6. DS博客大作业--树 (陈梓灿组)
  7. 转载 Golang []byte与string转换的一个误区
  8. ListView 如何提高其效率?
  9. Computer Network Homework3’ s hard question
  10. KNN原理小结