首先要使用的第类库有 urllib下的request 以及urllib下的parse 以及 time包 random包
之后我们定义一个名叫BaiduSpider类用来爬取信息
属性有 url:用来爬取的网址 headers:请求头
classBaiduSpider(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'}
之后我们定义三个方法 不涉及清洗数据
获取页面
1 #获取页面
2 defget_page(self,url):3 #定义请求对象
4 req = request.Request(url=url,headers=self.headers)5 #发起请求
6 res =request.urlopen(req)7 #获取相应对象
8 html = res.read().decode('utf-8', 'ignore')9 return html
保存数据
#保存数据
defwrite_page(self,filename,html):#将数据保存到本地
with open(filename,'w',encoding='utf-8') as f:
f.write(html)
主函数
#主函数
defmain(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 importrequest,parseimporttimeimportrandomclassBaiduSpider(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'}#获取页面
defget_page(self,url):#定义请求对象
req = request.Request(url=url,headers=self.headers)#发起请求
res =request.urlopen(req)#获取相应对象
html = res.read().decode('utf-8', 'ignore')returnhtml#解析数据
defparse_page(self):pass
#保存数据
defwrite_page(self,filename,html):#将数据保存到本地
with open(filename,'w',encoding='utf-8') as f:
f.write(html)#主函数
defmain(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文件打开后 与我们正常打开的网页并没有太大的差别