Python爬虫11--自己写一个贴吧网站内容的爬虫

功能:将贴吧中某个吧的1到1000页中的内容爬取下来,再以HTML的形式保存起来

运行效果:可以将已经爬取到的网站url显示,并将爬取到的内容以HTML的格式保存

 

 练习代码:

import requests    # 导入requests库


class TiebaSpider:
    def __init__(self, tieba_name):  # 调用初始化函数,将一些需要初始化的信息写在里面
        self.tieba_name = tieba_name  # 实例化贴吧的名字,让它之后能被调用
        self.url_temp = "https://tieba.baidu.com/f?kw="+tieba_name+"&ie=utf-8&pn={}"  # url地址的形式
        self.headers = {
            "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 "
                          "Safari/537.36"}  # 找一个User-Agent放进去

    def get_url_list(self):  # 获取url列表
        '''
        url_list = []  # 定义一个空列表存放即将生成的url地址
        for i in range(1000):  # 遍历0到1000,即生成1000个url地址
            url_list.append(self.url_temp.format(i * 50))  # 自动生成简单的url地址
        return url_list  # 将生成的url地址列表返回
        '''
        return [self.url_temp.format(i*50) for i in range(1000)]   # 用列表推导式写

    def parse_url(self, url):  # 发送请求,获取响应
        print(url)  # 查看获取到那个地址了
        resqonse = requests.get(url, headers=self.headers)  # 向浏览器进行请求
        return resqonse.content.decode()  # return浏览器response的内容,并解码

    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:  # 李毅--第一页.html
            f.write(html_str)  # 将获取到的HTML内容写入路径

    def run(self):  # 实现主要逻辑
        # 1.构造url列表
        url_list = self.get_url_list()  # 构造url列表,将即将要爬取的url放进去
        # 2.遍历发送请求,获取响应
        for url in url_list:  # 遍历刚刚构造的url列表
            html_str = self.parse_url(url)  # 调用获取html页面内容的函数
            # 3.保存
            page_num = url_list.index(url) + 1  # 构造一个页码函数
            self.save_html(html_str, page_num)  # 调用保存函数,将内容保存


if __name__ == '__main__':
    tieba_spider = TiebaSpider("李毅")  # 创建一个贴吧爬虫对象
    tieba_spider.run()  # 运行爬虫类主函数

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值