scrapy學習之路(八)網頁解析:BeautifulSoup

scrapy通過selenium獲取到網頁以後,爲了獲取數據,我們需要對網頁進行解析,BeautifulSoup是一種比較好用的頁面解析工具。

(一) 安裝beautifulsoup4

     pip install beautifulsoup4

(二)在spider中解析網頁:

     (1)引入模塊:

              from bs4 import BeautifulSoup

      (2) 通過頁面數據構建BeautifulSoup對象

               soup = BeautifulSoup(response.body.decode('utf-8'), 'html.parser')

      (3)解析數據,常用的如下:

              list = soup.find_all('li', 'list-item')

              ali.select('.d-t-c>.media')  #獲取tag

             ali.select('div[class="font-15 m-t-5 clearfix"]')[0].text  #獲取內容

            都是通過css選擇器篩選數據,瞭解css的基本都能理解上面的含義了

     (4)構建item:

             爲了將解析的數據從spider自動傳遞到pipeline,進行持久化存儲等後續操作,需要將解析的數據轉化爲item,

       創建item類(繼承自scrapy.Item),代碼如下:

           

 

             import scrapy

            class SpiderItem(scrapy.Item):

            # define the fields for your item here like:

            name = scrapy.Field(serializer=str)#serializer聲明序列化,有序列化要求的必須寫上,否則會報序列化異常

            position = scrapy.Field(serializer=str)

            date = scrapy.Field(serializer=str)

            content = scrapy.Field(serializer=str)

            pass

     在spider中賦值返回即可,代碼如下:

      

 

      def parse(self, response):

            item = MaimaispiderItem()

            item['name'] =  ali.select('div[class="font-13 m-t-5 clearfix"]')[0].text 

            item['position'] =  ali.select('div[class="font-14 m-t-5 clearfix"]')[0].text 

            item['date'] =  ali.select('div[class="font-15 m-t-5 clearfix"]')[0].text 

            item['content'] =  ali.select('div[class="font-16 m-t-5 clearfix"]')[0].text 

            yield item

 

如果設置了pipeline,則 數據會自動發送到pipeline中。

 

                 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章