香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

Python爬虫框架scrapy实现的文件下载功能示例


时间:2022-01-11 10:29 作者:admin610456


本文实例讲述了python/' target='_blank'>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程序设计有所帮助。

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)