在做爬虫工作之前,永远先做好笔记:

确定要爬取的url,爬取的具体内容是什么,用什么形式展现爬取到的内容。

博客的标题大家也看到了,爬取的是贴吧的源码,也就是说任何贴吧的源码都能爬。

不光第一页还要爬,第二页第三页……都要爬。

确定了上面的内容,那就可以开始代码的编写了。

我最近在玩穿越火线,那就爬穿越火线吧:

首先获取穿越火线贴吧的标准url:

"https://tieba.baidu.com/f?kw=穿越火线"
分析页码不同时url的区别:
第一页:"https://tieba.baidu.com/f?kw=穿越火线&ie=utf-8&pn=0"
第二页:"https://tieba.baidu.com/f?kw=穿越火线&ie=utf-8&pn=50"
第三页:"https://tieba.baidu.com/f?kw=穿越火线&ie=utf-8&pn=100"
对比分析,我们可以知道pn的值等于(页码-1)*50。
那么收集headers信息,就可以开始了:
import requests
class TiebaSpider:
    def __init__(self,tieba_name):        #实现能够爬取任意贴吧的功能,所以贴吧的名字需要做一个变量出来。
        self.tieba_name=tieba_name
        self.url="https://tieba.baidu.com/f?kw="+tieba_name+"&ie=utf-8&pn={}"
        self.headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26
Safari/537.36 Core/1.63.6814.400QQBrowser/10.3.3005.400"}
    def get_url_list(self):#构造url列表
        url_list=[]
        for i in range(3):  #能够爬取三页,i是0,1,2。
            url_list.append(self.url.format(i*50))
        return url_list
    def parse_url(self,url):#发送请求,获取响应
        response=requests.get(url,headers=self.headers)
        return response.content.decode()  #显示源码
    def save_html(self,html_str,page_num):#保存html字符串到文件
        file_path="{}-第{}页.html".format(self.tieba_name,page_num)
        with open(file_path,"w",encoding="utf-8") as f:  #创建文件。指定unicode编码为utf-8,很关键的一步。
        f.write(html_str)
    def run(self):#实现主要逻辑
    #1.构造url列表
        url_list=self.get_url_list()
    #2.遍历,发送请求,获取相应
        for url in url_list:
            html_str=self.parse_url(url)  #把源码存储到html_str变量之中。
    #3.保存html字符串
            page_num=url_list.index(url)+1     #用index检查是否存在url,并报出索引位置,是从0开始的。
            self.save_html(html_str,page_num)
            print(url,"爬取成功!")
if __name__=="__main__":
    tieba_spider=TiebaSpider("穿越火线")      #建立一个穿越火线吧的实例,这样做可以爬任意的贴吧。
    tieba_spider.run() 
敲爬虫代码的时候,思绪一定要清晰,先打好run()的主要功能,再去一一分别实现出来

转载于:https://www.cnblogs.com/Masterpaopao/p/10246296.html

贴吧小爬虫之爬取源码相关推荐

  1. 如何用python做考勤_【python爬虫教程 考勤】如何用Python实现一只小爬虫,爬取拉勾网...

    python爬虫入门教程全集 千锋官网上有一些是零基础入门学习的很不错 如何用Python实现一只小爬虫,爬取拉勾网 1.首先打开拉,并搜索"java",显示出职位信息就是我们的目 ...

  2. python爬虫,2020年《财富》中国500强排行榜数据爬取源码

    一个简单的demo,python爬虫,其实是以前的存货,很久很久没有写爬虫了,渣渣更渣了啊! 爬取财富中文网,2020年<财富>中国500强排行榜相关数据,数据都在网页源码里,结构也比较清 ...

  3. Python小爬虫:爬取开心网日记,乐趣无穷

    项目地址: https://github.com/aturret/python-crawler-exercise 用到了BeautifulSoup4,请先安装. pip install beautif ...

  4. Python小爬虫,爬取当前全部股票信息

    基本算是一个中小型爬虫,2000多股票信息全爬取,不知道发爬虫是否合乎规矩,因此稍微隐藏了两行超简单的代码,略懂python的人应该很轻松能补上. import requests import re ...

  5. 五分钟写一个小爬虫,爬取小说并写入txt文件

    先上代码: #-*- coding:UTF-8 -*- import requests from lxml import html url='http://www.shuge.net/html/111 ...

  6. 简单的小爬虫-漫画爬取

      好久没写代码了,快毕业了天天闲着玩游戏刷视频,最近刷七原罪这部动漫的时候,感觉动漫更新太慢,就去追漫画,于是为了方便观看避免广告的干扰,就写了个小爬虫,顺便练习练习python-   由于目前七原 ...

  7. python多级网址爬取_python-29:多级页面爬取源码

    我们再来看看前面说的3个步骤: 将首页的url传入,通过RE将源码中相册的网址获取出来 将相册的网址作为url传入 通过RE获取相册中相片的网址 代码如下: #!/usr/bin/env python ...

  8. python3 --小爬虫(爬取美剧字幕)

    # !bin/usr/env python3 # coding=utf-8 import re import urllib.request from bs4 import BeautifulSoup' ...

  9. html5小游戏猴子爬树源码,幼儿园中班《猴子爬树》教案模板

    活动目标: 1.在游戏情景中,试着听辩音乐的一些简单变化,学习有节奏地做猴子爬树的动作. 2.尝试创编各种猴子玩耍的动作. 3.借助已有经验.图片和老师的提问,理解并记忆歌词. 4.在感受歌曲的基础上 ...

最新文章

  1. ECMAScript 基础--原始类型
  2. Wireshark对HTTPS数据的解密
  3. SAP UI5 Extension getCustomProperties
  4. Ubuntu 设置下载路径
  5. mysql 多个库一起导出_MYSQL 导出多个库
  6. 雾里看花之 Python Asyncio
  7. 飞客蠕虫专杀工具_案例-飞客蠕虫攻击
  8. Functions In Go
  9. 芋道Docker部署
  10. 计算机类教学期刊,热门大学计算机教学论文参考文献 大学计算机教学核心期刊参考文献哪里找...
  11. 用单分子测序(single-molecule sequencing)和局部敏感哈希(locality-sensitive hashing)来组装大型基因组...
  12. 移动信号e经常无服务器,手机信号从4G变成E,是什么情况?移动客服作出解答...
  13. 2014春晚小品《扶不扶》台词集锦
  14. Reactive 响应式编程简单使用
  15. 学习金字塔——谈谈对学习的一点理解
  16. 服务器信号有杂音怎么回事,麦克风有杂音或电流声等的解决方法
  17. ImageLoader加载圆形图片
  18. 2022国赛数学建模思路 - 案例:集成算法AdaBoost
  19. 计算机三级网络技术交换机答题技巧,计算机三级考试考什么内容
  20. Android Manager之AssetManager

热门文章

  1. AMD推Radeon HD 7790显卡 性价比突出下月开卖
  2. iptables--静态防火墙实例教程
  3. 修改ssh默认端口号
  4. IBM RS/6000 AIX操作系统的安装
  5. 你犯了没?电脑最忌讳的18个小动作之三
  6. xfce中仿gnome的多桌面的xfdashboard的用法
  7. flink ETL和ETL工具啥区别
  8. cannot resolve symbol ‘log‘问题解决
  9. 根据子树样本数对cart树剪枝与剪枝前后图形绘制
  10. redis中的改操作