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()
  • 相关阅读:
    Python字典推导式将cookie字符串转化为字典
    爬取百度贴吧前1000页内容(requests库面向对象思想实现)
    牛客网:连续子数组的最大和
    在字符串中找出第一个只出现一次的字符,Python实现
    关于时间日期的程序,主要datetime模块
    [读书笔记] Python数据分析 (五) pandas入门
    [学习笔记] CS131 Computer Vision: Foundations and Applications:Lecture 3 线性代数初步
    [读书笔记] Python数据分析 (四) 数组和矢量计算
    [读书笔记] Python数据分析 (三) IPython
    [读书笔记] R语言实战 (六) 基本图形方法
  • 原文地址:https://www.cnblogs.com/542684416-qq/p/10139279.html
Copyright © 2011-2022 走看看