爬虫之Scrapy文件爬取
爬虫之利用scrapy进行文件爬取小白教程
一:利用scrapy提供的管道爬取
创建爬虫文件
scrapy genspider file_save
settings.py加入文件相关的管道类
ITEM_PIPELINES = {'scrapy.pipelines.files.FilesPipeline':300, }# 下载文件时需配置路径 FILES_STORE = "files"
编写file_save.py文件
import scrapy# 爬取matplotlib网站中的文件class FileSaveSpider(scrapy.Spider):name = 'file_save'# allowed_domains = ['file_save.com']start_urls = ['https://matplotlib.org/examples/']def parse(self, response):# 获取包含了所有文件对象的列表msg_list = response.xpath('//li[@class="toctree-l2"]')# 循环取出每一个文件对象for msg in msg_list:# 提取文件对象中的href属性href = msg.xpath('./a/@href').extract_first()# 拼接完整路径,scrapy提供了response.urljoin提供了一个urljoin方法用于拼接路径,及其方便full_href = response.urljoin(href)# 设置回调函数get_file,发起二次请求,从链接中获取文件yield scrapy.Request(url=full_href,callback=self.get_file)
编写回调函数get_file
def get_file(self,response):# 获取文件下载的地址 file_url = response.xpath('//div[@class="section"]/p/a/@href').extract_first()# 拼接完整的文件下载地址full_file_url = response.urljoin(file_url)
编写items.py文件,定义字段名
class FileSave(scrapy.Item):# 定义文件urlfile_urls = scrapy.Field()
在回调函数中实例化item对象,添加字段数据
def get_file(self,response):# 获取文件下载的地址 file_url = response.xpath('//div[@class="section"]/p[1]/a[1]/@href').extract_first()# 拼接完整的文件下载地址full_file_url = response.urljoin(file_url)# ---------------------------------------------------------------- # 实例化item对象item = FileSave()item["file_urls"] = [full_file_url]yield item# ----------------------------------------------------------------
爬出的文件名字都是经过加密的,我们需要修改文件的名字,所以我们需要在管道文件中重写父类FilesPipeline中的file_path方法
二:自定义管道爬取
- pipelines.py编写
from scrapy.pipelines.files import FilesPipeline
class SaveFilePipeline(FilesPipeline):def file_path(self,request,response=None,info=None):# # 文件名为请求url的最后一部分file_name = request.url.split('/')[-1]return f'full/{file_name}'
- settings.py编写
把上面加入的scrapy管道注释掉
ITEM_PIPELINES = {# 'scrapy.pipelines.files.FilesPipeline':300,'reptile.pipelines.SaveFilePipeline': 300,
}
自定义文件名爬取完毕
爬虫之Scrapy文件爬取相关推荐
- scrapy获取a标签的连接_python爬虫——基于scrapy框架爬取网易新闻内容
python爬虫--基于scrapy框架爬取网易新闻内容 1.需求[前期准备] 2.分析及代码实现(1)获取五大板块详情页url(2)解析每个板块(3)解析每个模块里的标题中详情页信息 点击此处,获取 ...
- 19. python爬虫——基于scrapy框架爬取网易新闻内容
python爬虫--基于scrapy框架爬取网易新闻内容 1.需求 [前期准备] 2.分析及代码实现 (1)获取五大板块详情页url (2)解析每个板块 (3)解析每个模块里的标题中详情页信息 1.需 ...
- python爬虫——用Scrapy框架爬取阳光电影的所有电影
python爬虫--用Scrapy框架爬取阳光电影的所有电影 1.附上效果图 2.阳光电影网址http://www.ygdy8.net/index.html 3.先写好开始的网址 name = 'yg ...
- 爬虫之Scrapy框架爬取彼岸壁纸案例分享
爬虫之Scrapy框架爬取彼岸壁纸案例分享 前段时间在网上看到有人爬取了彼岸壁纸的案例,由于爬取的图片较多,爬取速度感觉不快,所以就自己写了个Scrapy框架,个人觉得爬取速度快多了. 代码如下. 文 ...
- 14. python爬虫——基于scrapy框架爬取糗事百科上的段子内容
python爬虫--基于scrapy框架爬取糗事百科上的段子内容 1.需求 2.分析及实现 3.实现效果 4.进行持久化存储 (1)基于终端指令 (2)基于管道 [前置知识]python爬虫--scr ...
- 爬虫:Scrapy分类爬取苏宁易购书城
目录 1.scrapy框架概述 2.Scrapy爬取苏宁图书案例 3.设置配置文件 4.如何获取USER_AGENT 5.编写items.py文件 6.编写爬虫suning.py程序 1.s ...
- 【python 爬虫】 scrapy 入门--爬取百度新闻排行榜
scrapy 入门–爬取百度新闻排行榜 环境要求:python2/3(anaconda)scrapy库 开发环境:sublime text + windows cmd 下载scrapy(需要pytho ...
- python爬虫利用Scrapy框架爬取汽车之家奔驰图片--实战
先看一下利用scrapy框架爬取汽车之家奔驰A级的效果图 1)进入cmd命令模式下,进入想要存取爬虫代码的文件,我这里是进入e盘下的python_spider文件夹内 C:\Users\15538&g ...
- 数据采集与存储案例——基于Python爬虫框架Scrapy的爬取网络数据与MySQL数据持久化
此案例需要预先安装pymsql python3.7.4 scrapy2.7.1 一.安装scrapy框架 1.使用pip命令安装scrapy pip install scrapy 在这里下载太慢可以使 ...
- [Python爬虫]使用Scrapy框架爬取微博
Scrapy框架爬取微博 简介 包 Scrapy框架 main.py(启动文件) setting.py(配置文件) pq.py(项目文件) 话题小组模块 模板 图片模块 用户模块 视频模块(未找到视频 ...
最新文章
- (一)硕博生常用的中文文献检索方式推荐
- 2.5 网络中的网络及1x1卷积-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
- WDS 自动化部署安装 win2008 服务器实验
- CentOS 7安装GNOME图形界面并设置默认启动
- Twitch如何实现转码比FFmpeg性能提升65%?(下)
- 使用Lambda的装饰设计模式
- python网页填表教程_PythonSpot 中文系列教程 · 翻译完成
- openGauss北京Meetup成功举办,“产学研用”合力共建主流根社区(附:视频回放PPT)...
- mac android 投屏幕,将android/ios屏幕投射到windows/mac的良好参考
- FIRST集和FOLLOW集的构造
- CSS-伪类选择器(未完待续。。。)
- uniapp下载文件保存到手机本地
- PreferenceScreen修改背景颜色
- Fragstats计算景观生态指数
- 商务与经济统计学习 --概率
- msdia80.dll文件出现在磁盘根目录下的解决方案(转)
- 名帖204 蔡襄 行书《行书帖选》
- linux上创建loopback接口,在python中的特定接口的linux loopback接口
- linux查看服务器网络延迟,ECS Linux下的qperf测量网络带宽和延迟的具体步骤
- 汽车防抱死系统_ABS_建模与模糊PID控制研究