聚焦爬蟲介紹
1.編碼流程
- 指定url
- 發起請求
- 獲取響應數據
- 數據解析
- 持久化存儲
聚焦爬蟲詳情
- 如何實現數據解析?
- 正則
- bs4
- xpath
- 數據解析的原理
-
實現標簽定位
- 將標簽存儲的文本內容或者相關屬性值進行提取
- bs4數據解析
1.環境准備 - pin install bs4 - pip install lxml 2.bs4解析原理 - 實例化一個Beautiful Soup對象,必須將即將被解析的頁面源碼加載到該實例化對象中 - 調用該對象中相關的屬性或者方法進行標簽的定位和內容的提取 3.如何實例化一個BeautifulSoup對象 - 本地加載: soup = BeautifulSoup(fp,'lxml') - 網絡加載: soup = BeautifulSoup(page_text,'lxml')
4.相關的屬性和方法
- soup.tagName -->可以定位標簽,定位源碼中第一次出現的標簽,返回的永遠是一個單數 - soup.find() --->基於屬性定位實現的標簽定位 - soup.find_all() --->基於屬性定位實現的所有標簽定位,返回一個列表 - 取文本: - string : 取得標簽中直系的文本內容 - text/get_text() :取得的是標簽下的所有內容 - 取屬性: - tag['attrName'] #此種方式 -select: 使用選擇器定位標簽 返回的是列表 - 標簽,類,id選擇器 select('選擇器') - 層級選擇器 - 單層級 '.tang>ul>li' - 多層級 '.tang li'
- xpath數據解析
1.特點:通用性比較強 2.環境安裝: pip install lxml 3.解析原理: - 實例化一個etree對象,且將解析頁面源碼加載到該對象中 - 使用該對象中xpath方法接合xpath表達式進行標簽定位和數據解析提取
4.etree對象實例化 - 本地加載: tree = etree.parse("file_path") - 網絡加載 tree = etree.HTML(page_text)
5.相關的屬性和方法
#常用的xpath的表達式:基於標簽的層級實現定位 - /:從跟標簽開始實現層級定位 - //:從任意位置實現標簽定位 - 屬性定位: //tag[@class="name"] - 索引定位: //div[@class="name"]//li[5] - 取文本: -取得直系文本內容:/text() -取得所有文本內容://text() - 取屬性:/@attrName