zoukankan      html  css  js  c++  java
  • 爬取基础步骤(基础篇)

    接下来我以‘糗事百科’为例进行爬取。

    思路:

    一.创建一个类(命名方式最好是驼峰式)

    class QiuShiBaiKe 

    二.创建函数(用英语加下划线的方式)

    1.初始化必要参数,完成必要设置

        def __init__(self,qiushibaike_name):
            '''
            初始化必要参数,完成必要设置
            :param qiushibaike_name:
            '''
            self.qiushibaike_name = qiushibaike_name
            self.url_base = 'https://www.qiushibaike.com/'+ qiushibaike_name + '/page/{}/'
            self.headers = {'User-Agent':'WSF'}

    2.生成下载列表

        def make_url_lists(self):
            '''
            生成下载列表
            :return: 下载列表
            '''
            return [self.url_base.format(i) for i in range(1,11)]

    3.使用requests get 的方法下载指定页面,并返回页面结果

    ef download_url(self,url_str):
            '''
            使用requests get 的方法下载指定页面,并返回页面结果
            :param url_str: 下载链接
            :return: 下载结果
            '''
            result = requests.get(url_str,headers=self.headers)
            return result.content

    4.保存下载结果

        def save_result(self,result,page):
            '''
            保存下载的结果
            :param result:
            :param page:
            :return:
            '''
            file_path = '{}第{}页.html'.format(self.qiushibaike_name,page)
            with open(file_path,'wb') as f:
                f.write(result)

    5.下载主线程,实现主要的下载逻辑

        def run(self):
            '''
            下载主线程,实现主要的下载逻辑
            :return:
            '''
            url_lists = self.make_url_lists()
            for url_str in url_lists:
                print(url_str)
                result_url = self.download_url(url_str)
                page       = url_lists.index(url_str) + 1
                self.save_result(result_url,page)

    完整代码如下:

    import requests
    
    class QiuShiBaiKe:
        def __init__(self,qiushibaike_name):
            '''
            初始化必要参数,完成必要设置
            :param qiushibaike_name:
            '''
            self.qiushibaike_name = qiushibaike_name
            self.url_base = 'https://www.qiushibaike.com/'+ qiushibaike_name + '/page/{}/'
            self.headers = {'User-Agent':'WSF'}
    
        def make_url_lists(self):
            '''
            生成下载列表
            :return: 下载列表
            '''
            return [self.url_base.format(i) for i in range(1,11)]
    
        def download_url(self,url_str):
            '''
            使用requests get 的方法下载指定页面,并返回页面结果
            :param url_str: 下载链接
            :return: 下载结果
            '''
            result = requests.get(url_str,headers=self.headers)
            return result.content
    
        def save_result(self,result,page):
            '''
            保存下载的结果
            :param result:
            :param page:
            :return:
            '''
            file_path = '{}第{}页.html'.format(self.qiushibaike_name,page)
            with open(file_path,'wb') as f:
                f.write(result)
    
        def run(self):
            '''
            下载主线程,实现主要的下载逻辑
            :return:
            '''
            url_lists = self.make_url_lists()
            for url_str in url_lists:
                print(url_str)
                result_url = self.download_url(url_str)
                page       = url_lists.index(url_str) + 1
                self.save_result(result_url,page)
    
    if __name__=='__main__':
        qiushibaike_name = QiuShiBaiKe('8hr')
        qiushibaike_name.run()
  • 相关阅读:
    Oracle Function REGEXP
    Asp.net 注册IIS
    SAP모듈
    C# 程序中,不使用TNS File 中的服务名进行数据库连接
    跟我一起学XNA(2)让物体动起来②(附源码)
    ubuntu显卡的几个帖子
    每秒改变一次背景颜色以及由此引发的一些有趣的小事情(.net方向)
    to myself
    vi编辑器上下左右键盘变成ABCD
    一个最简单的linux hello world模块
  • 原文地址:https://www.cnblogs.com/542684416-qq/p/10139279.html
Copyright © 2011-2022 走看看