• 爬虫 urllib.request 模块


    爬虫网络请求方式的一种

    爬虫数据提取方式我们用的是正则表达式

    我们用到的:

          re模块     在我的随笔中有这个

          Request   用来创建请求对象

          urlopen    发送请求

    导入:

    import re
    from urllib.request import Request, urlopen
    class CSDNSpider(object):
          
    
        def __init__(self,url):
           self.url = url
           #设置浏览器标识
            self.user_agent = "       " 
     
        def get_page_code(self):
           #创建请求对象
           request = Request(url = self.url , headers = {'User-Agent':self.user_agent})
           #发送请求
            try:
                 response = urlopen(request)
                 # 从响应对象中获取源代码字符串。
                 # response.read(): <class 'bytes'>字节类型,python3新增
                 # decode(): 将bytes类型转成str类型
                 # encode():  将str类型转成bytes类型
                  data = response.read().decode()
                  except Exception as e:
                      print('请求异常')
                   else:
                      return data
    
    
         def parse_data_by_html(self,html):
               """ 
                解析Html,获取数据
                :param html: 源代码
                :return: 返回解析的数据
                """
                pattern = re.compile(r'   ' , re.S)
                res = re.findall(pattern, html)
                return  res
    

    res中的数据可能含有一些我们不需要的字符串        注:因为我们用的正则匹配的对象是字符串,所以匹配出来的可能含一些杂乱的字符串

    所以我们要对res进行处理

    方法是创建一个处理数据的函数

    class DataParserTool(object):
        @classmethod
        def parser_data(cls, data):
            """
            处理数据
            :param data: 数据元组 [(), (),()]
            :return: [(), (), ()]
            """
            data_list = []
            
            for n1, n2, n3, n4 ,n5,n6 in data:
                n1 =n1.strip() # 去除两端空格
                n2 = n2.replace('
    ', '')
                data_list.append((n1, n2, n3, n4 ,n5,n6))
            return data_list
    @classmethod 调用对象方法    DataParserTool.parser_data()
    不加的话 调用对象 在调方法 DataParserTool().parser_data()

  • 相关阅读:
    面试随缘刷题--day7
    面试随缘刷题--day6
    面试随缘刷题--day5
    面试随缘刷题--day4
    面试随缘刷题--day3 二分专题
    Python 将普通图片转字符画
    相离的圆(排序+二分查找)
    Java利用图灵机器人接口实现简单的聊天程序
    正整数分组(动态规划)
    循环数组最大子段和(动态规划)
  • 原文地址:https://www.cnblogs.com/eunuch/p/9158866.html
Copyright © 2020-2023  润新知