07 利用python爬虫技术爬取贴吧源码案例

以爬取“李毅”吧为例,写一个小程序,完成自动的爬取与本地保存工作,此处在python3环境下运行,python2环境下response.content是字符串,不需要解码,去掉本代码中的decode()即可,具体区别参照文章 04requests模块在python2和python3环境下的小小区别
另外python2环境下,代码中的save方法encoding参数需要去掉,代码中已注释

# coding=utf-8
import requests


class TiebaSpider:
    def __init__(self, tieba_name):
        self.tieba_name = tieba_name
        # 定义一个临时的url
        self.temp_url = 'https://tieba.baidu.com/f?kw='+tieba_name+'&pn={}'
        self.headers = {
            'User - Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 \
(KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'
        }

    def get_url_list(self):   # 构造url列表
        url_list = [self.temp_url.format(i*50) for i in range(1000)]
        return url_list

    def parse_url(self, url):  # 发送请求获取响应
        print('now parse', url)
        response = requests.get(url, headers=self.headers)
        return response.content.decode()

    def save_html(self, html, page_num):  # 保存html
        file_path = self.tieba_name + "_" + str(page_num) + ".html"
        with open(file_path, "w", encoding='utf-8') as f:   # windows下需要加encoding = 'utf-8',因为windows 默认编码方式是gbk\
            如果是python2环境下运行,需要去掉encoding这个参数,否则报错
            f.write(html)
        print("保存成功")

    def run(self):
        # 1.url list
        url_list = self.get_url_list()
        # 2.发送请求,获取响应
        for url in url_list:
            html_str = self.parse_url(url)
        # 3.保存
            page_num = url_list.index(url) + 1  # index方法获取当前要保存的页码数
            self.save_html(html_str, page_num)

if __name__ == '__main__':
    tieba = TiebaSpider("李毅")
    tieba.run()

运行代码,保存本地结果展示如下


结果展示如图所示
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 可以看我的博客 lmwen.top 或者订阅我的公众号 简介有稍微接触python的人就会知道,python中...
    ayuLiao阅读 3,455评论 1 5
  • 原文: https://wiki.python.org/moin/Python2orPython3 在项目开发中,...
    林湾村龙猫阅读 4,192评论 0 6
  • 最近iOS方面没有开发任务, 老板给了我两周的时间学习爬虫. 期间踩了无数的坑. 终于算是可以在爬虫方面有所小成,...
    Pusswzy阅读 10,740评论 38 81
  • Since Jan.26th,2016 1、ubuntu 下运行 python 的几种方式 在 terminal...
    Rco阅读 2,757评论 0 2
  • 春暖花开的日子 我听见每一朵云都在欢唱 为着这些美好的时光 洗去昨日的忧伤 谁告诉我的 日落的巷口有着诗一样的惆怅...
    北小音阅读 430评论 0 4

友情链接更多精彩内容