scrapy——從爬取京東商品數據來看一個好簡單的scrapy爬蟲怎麼寫

我們將採用python+scrapy框架來寫這次這個好簡單的爬蟲。
前提條件:
1、安裝了python
2、安裝scrapy庫
沒了就兩個

首先,一個爬蟲,無非就是把某個網頁中我們看到的信息複製下來,再保存下來,要是你有毅力,你可以手動複製粘貼完成爬蟲的任務。網頁展示的內容呢,都是可以在網頁的源代碼中找到的,所以,我們只要把網頁源代碼下載下來,然後再在源代碼中定位到我們想要的內容,然後“複製粘貼”就ok啦。
所以我們的步驟應該是
1、先利用某某東西,訪問網頁,再把網頁的源代碼給全部下載下來(這個東西最好只要我給它一個網址,他就能把對應網址的源代碼下載下來,urllib可以幫到我們)
2、然後,我就需要定位我要的信息在源代碼的哪一塊,你當然可以像處理字符串一樣去處理下載下來的網頁源代碼,但那樣太折磨人了,有好多工具可以幫助我們定位(css,xpath等等)
3、然後我已經拿到了我要的數據了,下面我可能想把這些數據保存到本地的一個txt文件裏面去,又或者csv,json,或者直接保存到數據庫裏,那這裏就是文件或者數據庫操作了
三個步驟下來,就完成這次的爬取任務了
scrapy 就可以幫助我們完成上面三個步驟,而且非常輕鬆
上面是“老三步”了,下面來看利用scrapy的“新三步”
1、創建scrapy項目(是的,你要用scrapy,請先創建一個scrapy項目)
打開cmd,進入到你準備存放項目的路徑下,慢慢的小心的敲入 (確保已經成功安裝scrapy,同時將其添加到了環境變量中)

scrapy startproject XXXXXXXX   #XXXXXXXX是你給項目起的名字      

這個時候該路徑下就有一個叫做XXXXXXXX的文件夾,裏面就是初始化好的scrapy項目了
2、創建一個“蜘蛛”,請進入你剛纔創建好的scrapy項目文件夾內,慢慢的小心的敲入

scrapy genspider jd_spider www.jd.com  #jd_spider 是這個蜘蛛的名字  www.jd.com表示這隻蜘蛛爬取的網站被限制在www.jd.com

3、到這裏準備工作就做好啦,下面就來看看我要讓這個爬蟲怎麼去京東上取信息呢?
用你的pycharm打開剛纔創建好的scrapy項目,然後看到自動創建好的jd_spider.py文件,添加以下內容

# -*- coding: utf-8 -*-
import scrapy
from ..items import JdScrapyItem

class JdSpiderSpider(scrapy.Spider):
    name = 'jd_spider'
    allowed_domains = ['jd.com']
    start_urls = ['https://search.jd.com/Search?keyword=oppo&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&bs=1&wq=oppo&ev=exbrand_OPPO%5E&page=1&s=56&click=0']
    def parse(self, response):
    	#通過查看網頁源代碼,這裏可以定位到這一頁的所有商品信息
        each = response.xpath('//*[@id="J_goodsList"]/ul/li')
        
        #其中包含了每個商品的信息,我們循環把每個商品都找出來
        for i in each:
        	#這裏獲取到了該商品的價格
            money = i.xpath('./div/div[3]/strong/i/text()').extract()
			
			#這裏獲取商品的詳細介紹
            introduce = i.xpath('./div/div[4]/a/em/text()').extract()
            
            #這個處理主要是因爲,有一些商品的介紹有多行,我們吧他們都做一個合併
            str1 = ''
            if len(money) == 0 or len(introduce)==0:
                continue
            for k in introduce:
                str1 += k
                
            print(money)
            print(str1)

在執行爬蟲的時候,訪問網頁,下載網頁源代碼都是scrapy自動幫我們做了,是不是很簡單,我們看到函數

def parse(self, response):

參數中的response就是返回的網頁源代碼,我們可以直接用xpath或者其他的工具進行定位了(利用xpath)

如此,一個好簡單的爬蟲就好簡單的寫完了,有了scrapy框架,我們不用再費精力與網頁的訪問和源代碼的下載,專心於定位信息就好。
爲了能自己寫一個爬取其他網站的爬蟲,你還需要掌握基本的xpath語法和網頁源碼的查看方法(利用谷歌瀏覽器的F12)
運行scrapy爬蟲,請慢慢的小心的在cmd敲入

scrapy crawl jd_spider   #表示運行jd_spider爬蟲

爲了在pycharm中直接運行爬蟲,可添加如下內容到一個xxx.py文件中去,然後運行xxx.py

from scrapy import cmdline
cmdline.execute("scrapy crawl jd_spider".split())

點擊下載,這裏是項目打包

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