爬蟲 urllib.request 模塊

爬蟲網絡請求方式的一種html

爬蟲數據提取方式咱們用的是正則表達式python

咱們用到的:正則表達式

      re模塊     在個人隨筆中有這個瀏覽器

      Request   用來建立請求對象網絡

      urlopen    發送請求app

導入:ide

 

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進行處理url

方法是建立一個處理數據的函數spa

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('\n', '')
            data_list.append((n1, n2, n3, n4 ,n5,n6))
        return data_list
@classmethod 調用對象方法    DataParserTool.parser_data()不加的話 調用對象 在調方法     DataParserTool().parser_data()
相關文章
相關標籤/搜索