爬蟲網絡請求方式的一種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()