實現(xiàn)scrapy 爬取伯樂在線全部文章,修復(fù)對獲取下一頁url的錯誤
scrapy 提供了圖片下載和處理的功能,即 ImagesPipiline 類,直接通過配置 setting.py 設(shè)置相應(yīng)的變量即可達(dá)到下載圖片的目的
中間出現(xiàn)的錯誤:
no module named "PIL"
pip install pillow-
ValueError: Missing scheme in request url
這是在訪問圖片url 的時候出現(xiàn)的錯誤,查看源代碼能夠得知,這是ImagesPipeline類中def get_media_requests(self, item, info):
return [Request(x) for x in item.get(self.images_urls_field, [])]
這個函數(shù)訪問url 的時候,返回的是一個數(shù)組,能夠通過for 循環(huán)進(jìn)行迭代訪問。也就是說,在 parse 的時候,對 url 進(jìn)行復(fù)制的 item 中的圖片鏈接變量就必須是數(shù)組或者生成器
細(xì)節(jié)處理:
對 url 獲取返回給scrapy 后,scrapy 會進(jìn)行下載,但是url 可能需要拼接,這就需要使用到 urllib 庫中的parse 類中的 joinurl 函數(shù)
設(shè)置環(huán)境變量或者工作路徑
os.path.dir(file) 獲取當(dāng)前文件所在目錄
os.path.abspath() 獲取絕對路徑
sys.path.append() 添加工作路徑setting.py 中的參數(shù)說明
ITEM_PIPELINE
IMAGES_MIN_HEIGHT
IMAGES_MIN_WIDTH
IMAGES_URLS_FIELD
IMAGES_STORE
這些配置參數(shù)在 ImagesPipiline 類的實現(xiàn)中都能看到
總結(jié)成一篇博客,如何使用 scrapy 進(jìn)行簡單的爬蟲
對 ZERO TO ONE 的讀后感
今日計劃:
博客
scrapy 如何將 item loader 的內(nèi)容通過 pipeline 處理后保存到本地文件或者數(shù)據(jù)庫中(采用 MySQL),或者放在 redis 中