Python爬虫之简单的爬取百度贴吧数据 - 小巩的python笔记

gongdada 2021-08-13 原文


Python爬虫之简单的爬取百度贴吧数据


Python爬虫之简单的爬取百度贴吧数据

首先要使用的第类库有 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\'}

 

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

获取页面

1 #获取页面
2     def get_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

保存数据

#保存数据
    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文件打开后 与我们正常打开的网页并没有太大的差别

 

发表于
2019-10-03 20:03 
小巩的python笔记 
阅读(657
评论(0
编辑 
收藏 
举报

 

版权声明:本文为gongdada原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/gongdada/p/11620613.html

Python爬虫之简单的爬取百度贴吧数据 - 小巩的python笔记的更多相关文章

  1. MoChat – 国内首款完全开源的 PHP 企业微信管理系统正式发布

    MoChat —— 让企业微信开发更简单 项目地址 Github: https://github.com/mo […]...

  2. buffer model & instance

    QAT中buffer的数据结构有两种:Flat Buffers和 Scatter Gather Lists。 […]...

  3. 自动化测试-自动获取手机短信验证码 – 贾常伟

    最近在做生产环境自动化测试,碰到一个难题就是短信验证码的获取,生产环境短信验证码是真实的,不能采用测试环境将短 […]...

  4. 卸载 SQL Server Management Studio 的操作工具 – message zdw

    卸载 SQL Server Management Studio 的操作工具  我们今天是要和大家一起讨论的是卸 […]...

  5. Centos7安装Zabbix4.0步骤 – CARLOS_KONG

    Centos7安装Zabbix4.0步骤 点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 […]...

  6. 转载:协方差与协方差矩阵 – 川师15级软工研王*飞

    转载:协方差与协方差矩阵 本文讲的主要内容是协方差以及协方差矩阵。   在统计学中,我们见过的最基本的三个概念 […]...

  7. qt-vsintegration安装失败原因——原是杀软惹的祸 – smoozer

      安装qt-vsintegration-1.4.1.exe,安装了无数遍,死活安装不成功。安装到一定阶段就弹 […]...

  8. SharePoint Server 2010 安装图解 – ewyb

    SharePoint Server 2010 安装图解 SharePoint Server 2010作为MOS […]...

随机推荐

  1. Vue 生成PDF并下载

    实现原理 该功能原理是将页面转化伟canvas在把canvas转化为base64数据 最后将数据通过pdf.j […]...

  2. 【MySQL】ERROR 1045 (28000): Access denied for user的解决方法

      去官网下载压缩版的MySQL Server,解压配置path环境变量后。然后克隆my-default.in […]...

  3. ArrayList 源码底层实现解析 基于1.8

    ArrayList 介绍   ArrayList是一种线性数据结构,它的底层是用数组实现的,是动态数组。与Ja […]...

  4. 01-MongoDB数据库基础

    一、MongoDB数据库基础 1、MongoDB数据库介绍 什么是MongoDB?   MongoDB是非关系 […]...

  5. 解决Latex复制到公众号可能报“图片粘贴失败”的问题

    前几天出了个版本,还发了篇“Md2All,让公众号完美显示Latex数学公式”的文章,发完后,心里还是不太爽的 […]...

  6. OSG开源教程(转)

      例:geom->addPrimitiveSet(new osg::DrawArrays(osg::P […]...

  7. MySQL中varchar与char区别

    一. varchar存储规则:     4.0版本以下,varchar(20),指的是20字节,如果存放UTF […]...

  8. form提交上传图片

    html:         <!–<form method=”post&# […]...

展开目录

目录导航