国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python爬蟲框架scrapy實現的文件下載功能示例

2020-02-15 22:41:50
字體:
來源:轉載
供稿:網友

本文實例講述了Python爬蟲框架scrapy實現的文件下載功能。分享給大家供大家參考,具體如下:

我們在寫普通腳本的時候,從一個網站拿到一個文件的下載url,然后下載,直接將數據寫入文件或者保存下來,但是這個需要我們自己一點一點的寫出來,而且反復利用率并不高,為了不重復造輪子,scrapy提供很流暢的下載文件方式,只需要隨便寫寫便可用了。

mat.py文件

# -*- coding: utf-8 -*-import scrapyfrom scrapy.linkextractor import LinkExtractorfrom weidashang.items import matplotlibclass 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 executeexecute(['scrapy', 'crawl', 'mat','-o','example.json'])

更多關于Python相關內容可查看本站專題:《Python Socket編程技巧總結》、《Python正則表達式用法總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》

希望本文所述對大家Python程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 开阳县| 兴文县| 茌平县| 桃园县| 冕宁县| 寿光市| 乌拉特后旗| 兴山县| 正蓝旗| 房产| 哈密市| 阿坝| 九龙坡区| 海城市| 松阳县| 龙州县| 团风县| 吐鲁番市| 怀化市| 莱阳市| 福州市| 扶余县| 宽城| 惠东县| 金沙县| 博客| 青州市| 诸暨市| 久治县| 拉萨市| 千阳县| 崇阳县| 鄄城县| 米林县| 都江堰市| 海南省| 赣州市| 阿尔山市| 大厂| 嘉峪关市| 登封市|