Python爬虫框架scrapy实现的文件下载功能示例
作者:Charles.L 时间:2023-09-23 09:41:56
本文实例讲述了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程序设计有所帮助。
来源:https://www.cnblogs.com/lei0213/p/8098180.html
标签:Python,爬虫框架,scrapy,文件下载
0
投稿
猜你喜欢
Python网络编程之使用email、smtplib、poplib、imaplib模块收发邮件
2023-06-30 08:45:42
SQL Server元数据的管理与应用
2009-03-16 14:24:00
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
2023-09-07 03:34:41
Python如何处理异常报错方法(建议收藏!)
2022-08-09 03:19:13
pytorch常用函数之torch.randn()解读
2023-03-24 09:08:29
asp如何实现强制登录注册?
2010-05-24 18:13:00
Go 语言实现 HTTP 文件上传和下载
2023-06-23 01:42:24
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2024-04-22 22:33:33
Linux下安装mysql的教程详解
2024-01-20 03:24:37
全民学编程之 Hello World
2023-03-13 20:48:37
Python爬虫Scrapy框架IP代理的配置与调试
2022-09-19 08:20:26
Python实现对二维码数据进行压缩
2022-10-22 12:51:59
Python如何使用pymongo连接MongoDB数据库并进行相关操作
2023-05-12 01:21:49
python生成n个元素的全组合方法
2023-11-10 20:35:08
python实现凯撒密码
2022-10-13 07:31:44
利用python实现蝴蝶曲线
2022-09-30 18:51:51
python处理文本文件实现生成指定格式文件的方法
2022-01-07 21:41:43
git 一个可以提高开发效率的命令:cherry-pick详解
2022-03-03 01:40:22
pandas创建DataFrame对象失败的解决方法
2022-06-23 17:12:54
JS操作input标签属性checkbox全选的实现代码
2024-04-28 09:50:56