我們將採用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())