Python爬蟲框架scrapy實現的文件下載功能示例
本文實例講述了Python爬蟲框架scrapy實現的文件下載功能。分享給大家供大家參考,具體如下:
我們在寫普通腳本的時候,從一個網站拿到一個文件的下載url,然后下載,直接將數據寫入文件或者保存下來,但是這個需要我們自己一點一點的寫出來,而且反復利用率并不高,為了不重復造輪子,scrapy提供很流暢的下載文件方式,只需要隨便寫寫便可用了。
mat.py文件
# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractor import LinkExtractor
from weidashang.items import matplotlib
class MatSpider(scrapy.Spider):
name = "mat"
allowed_domains = ["matplotlib.org"]
start_urls = ['https://matplotlib.org/examples']
def parse(self, response):
#抓取每個腳本文件的訪問頁面,拿到后下載
link = LinkExtractor(restrict_css='div.toctree-wrapper.compound li.toctree-l2')
for link in link.extract_links(response):
yield scrapy.Request(url=link.url,callback=self.example)
def example(self,response):
#進入每個腳本的頁面,抓取源碼文件按鈕,并和base_url結合起來形成一個完整的url
href = response.css('a.reference.external::attr(href)').extract_first()
url = response.urljoin(href)
example = matplotlib()
example['file_urls'] = [url]
return example
pipelines.py
class MyFilePlipeline(FilesPipeline):
def file_path(self, request, response=None, info=None):
path = urlparse(request.url).path
return join(basename(dirname(path)),basename(path))
settings.py
ITEM_PIPELINES = {
'weidashang.pipelines.MyFilePlipeline': 1,
}
FILES_STORE = 'examples_src'
items.py
class matplotlib(Item): file_urls = Field() files = Field()
run.py
from scrapy.cmdline import execute execute(['scrapy', 'crawl', 'mat','-o','example.json'])
更多關于Python相關內容可查看本站專題:《Python Socket編程技巧總結》、《Python正則表達式用法總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
相關文章
python?sklearn與pandas實現缺失值數據預處理流程詳解
對于缺失值的處理,主要配合使用sklearn.impute中的SimpleImputer類、pandas、numpy。其中由于pandas對于數據探索、分析和探查的支持較為良好,因此圍繞pandas的缺失值處理較為常用2022-09-09
Flask和Django框架中自定義模型類的表名、父類相關問題分析
這篇文章主要介紹了Flask和Django框架中自定義模型類的表名、父類相關問題,結合實例形式對比分析了Flask框架與Django框架表名定義方式的不同之處,并簡單描述了框架的父類繼承問題,需要的朋友可以參考下2018-07-07

