首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将输出文件路径列表传递给Scrapy?

如何将输出文件路径列表传递给Scrapy?
EN

Stack Overflow用户
提问于 2016-01-24 21:32:31
回答 2查看 1.2K关注 0票数 0

我有一个进程(在Scrapy外部),它生成到pdf文档的URL列表,以及我想保存每个pdf的列表文件。

以下是解释了如何将URL列表作为命令行参数传递给Scrapy,但是,有没有办法传递文件并确保每个pdf都保存在提供的文件中?

我怀疑我需要基于文档中提供的本教程修改下面的内容,但据我了解,parse方法用于确定如何处理一个响应,而不处理一个列表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def parse(self, response):
    filename = response.url.split("/")[-2] + '.html'
    with open(filename, 'wb') as f:
        f.write(response.body)

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-28 23:13:06

原来这是一个与python相关的问题,与Scrapy本身无关。以下就是我想要的解决方案。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# To run;    
# > scrapy runspider pdfGetter.py -a urlList=/path/to/file.txt -a pathList=/path/to/another/file.txt

import scrapy
class pdfGetter(scrapy.Spider):
    name = "pdfGetter"

    def __init__(self,urlList='',pathList=''):
        self.File=open(urlList)
        self.start_urls = [url.strip() for url in self.urlFile.readlines()]
        self.File.close()

        self.File=open(pathList)
        self.save_urls = [path.strip() for path in self.pathFile.readlines()]
        self.File.close()

    def parse(self, response):
        idx = self.start_urls.index(response.url)
        with open(self.save_urls[idx], 'wb') as f:
            f.write(response.body)    
票数 1
EN

Stack Overflow用户

发布于 2016-01-26 13:14:18

如果我是对的,您不能用刮伤“抓取”一个pdf,但是如果您想保存pdfs,就不需要爬行它,只需要url,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import urllib
from scrapy import Spider

class MySpider(Spider):
    name = "myspider"
    start_urls = ['http://website-that-contains-pdf-urls']

    def parse(self, response):
        urls = response.xpath('//xpath/to/url/@href').extract()
        for url in urls:
            urllib.urlretrieve(url, filename="name-of-my-file.pdf")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34985737

复制
相关文章
scrapy 传参
当爬虫上线时难免会希望动态传参,下面跟着小二一起学传参吧,喽喽喽! 直接上代码: 自己写的spider class MWMSpider(scrapy.Spider): name = 'mwm_flowers_spider' def __init__(self, **kwargs): self.city_name = kwargs['city_name'] self.run_time = kwargs['run_time'] self
shengjk1
2018/10/24
1.7K0
linux如何将输出重定向到文件和标准输出
调用ls -al > rumenz.txt会将来自该命令的任何输出重定向到指定的文件,有没有办法将输出重定向到文件并将其显示在标准输出上? > ls -al > rumenz.txt 上面的命令执行后,数据被输入到rumenz.txt文件,屏幕没有任何输出,如果既想输入到文件又想输入到屏幕,请使用如下的方法. 使用tee 如果您只关心标准输出 > ls -al | tee rumenz.txt 如果要包含 stderr,请执行以下操作,会覆盖之前的数据 > ls -al 2>&1 | tee rumen
入门笔记
2022/06/02
5.4K0
linux如何将输出重定向到文件和标准输出
原文链接:https://rumenz.com/rumenbiji/linux-file-stdin-stdout.html
入门笔记
2021/11/26
5.1K0
Qmake设置输出文件路径与名字
通过设置Qt项目文件来设置程序/库的生成路径与名字。 设置输出名字 Test为设置输出名字; 如果是执行文件则自动为程序添加后缀(.exe),如果是库文件则自动为库添加后缀(.dll)和 libxxx.a(这里是 libTest.a)名字。 TARGET = Test 设置输出路径 输出为 .pro项目所在的Test目录下。 $$PWD意思为当前目录。 DESTDIR = $$PWD/Test 另外 TEMPLATE = app # 设置为执行文件工程TEMPLATE = lib # 设置为库文件工程
Qt君
2019/07/15
3.4K0
如何将多个参数传递给 React 中的 onChange?
在 React 中,一些 HTML 元素,比如 input 和 textarea,具有 onChange 事件。onChange 事件是一个非常有用、非常常见的事件,用于捕获输入框中的文本变化。有时候,我们需要将多个参数同时传递给 onChange 事件处理函数,在本文中,我们将介绍如何实现这一目标。
网络技术联盟站
2023/06/07
2.7K0
ls按时间排序输出文件列表
ls按时间排序输出文件列表 首先,ls --help查看ls相关的与时间排序相关的参数: > ls --help|grep -E "time|sort" 如果不指定 -cftuSUX 或 --sort 任何一个选项,则根据字母大小排序。   -c                         配合 -lt:根据 ctime 排序及显示 ctime (文件                                配合 -l:显示 ctime 但根据名称排序                      
joshua317
2018/04/13
1.3K0
如何将 Linux 命令输出重定向到文件?
在Linux系统中,命令行是非常强大和灵活的工具。它允许我们执行各种任务和操作,包括将命令的输出保存到文件中。本文将介绍如何使用重定向操作符将Linux命令的输出导入到文件中,并列举尽可能多的命令示例。
网络技术联盟站
2023/07/14
1.7K0
如何将 Linux 命令输出重定向到文件?
如何将 Linux 命令输出重定向到文件?
在Linux系统中,命令行是非常强大和灵活的工具。它允许我们执行各种任务和操作,包括将命令的输出保存到文件中。本文将介绍如何使用重定向操作符将Linux命令的输出导入到文件中,并列举尽可能多的命令示例。
网络技术联盟站
2023/08/03
1.9K0
如何将 Linux 命令输出重定向到文件?
Vue 中,如何将函数作为 props 传递给组件
作者:Michael Thiessen 译者:前端小智 来源:medium 点赞再看,养成习惯本文 GitHub https://github.com/qq44924588... 上已经收录,更多往
前端小智@大迁世界
2020/05/18
8.2K0
Scrapy输出中文保存中文
scrapy在保存json文件时容易乱码 settings.py文件改动: ITEM_PIPELINES = { 'tutorial.pipelines.TutorialPipeline': 300, } pipeline.py文件改动: import json import codecs class TutorialPipeline(object): def __init__(self, spider): self.file = codecs.open('data_cn
林清猫耳
2019/03/04
2.8K0
python中如何定义函数的传入参数是option的_如何将几个参数列表传递给@ click.option…
如果通过使用自定义选项类将列表格式化为python列表的字符串文字,则可以强制单击以获取多个列表参数:
Java架构师必看
2021/08/23
7.7K0
msbuild 修改 VisualStudio 文件复制到输出目录的路径
在默认的 VisualStudio 可以右击任意的文件,让这个文件在编译时复制到输出目录,但是这个选项将会在复制到输出目录时带上这个文件所在 VisualStudio 的文件夹结构。本文告诉大家几个方法让 VisualStudio 的文件可以在编译时输出到自定义的任意路径
林德熙
2020/02/17
3.6K1
力学概念| 直接传力路径
力的自然属性是尽快传到支座。因此,只要有可能,主要传力路径就是接地的直杆。来看下面的例子。
fem178
2023/09/21
8800
力学概念| 直接传力路径
手把手教你用Python实现分布式爬虫(四) - scrapy爬取技术文章网站
搭建scrapy的开发环境,本文介绍scrapy的常用命令以及工程目录结构分析,本文中也会详细的讲解xpath和css选择器的使用。然后通过scrapy提供的spider完成所有文章的爬取。然后详细讲解item以及item loader方式完成具体字段的提取后使用scrapy提供的pipeline分别将数据保存到json文件以及mysql数据库中.
JavaEdge
2019/03/25
1.8K0
Python分布式爬虫框架Scrapy 打造搜索引擎(四) - 爬取博客网站
搭建scrapy的开发环境,本文介绍scrapy的常用命令以及工程目录结构分析,本文中也会详细的讲解xpath和css选择器的使用。然后通过scrapy提供的spider完成所有文章的爬取。然后详细讲解item以及item loader方式完成具体字段的提取后使用scrapy提供的pipeline分别将数据保存到json文件以及mysql数据库中.
JavaEdge
2022/12/15
1.1K2
Python分布式爬虫框架Scrapy 打造搜索引擎(四) - 爬取博客网站
python 列表list输出形式
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
用户7886150
2021/01/09
1.5K0
vue 中路径props的传参
第一种:单一参数 { path: '/news/:id', //模板props中也需要是id props:true, name:news, component: news } 第二种:多个参数 { path: '/news/:id', props:function(route){ console.log(route); return { id:route.params.id, username:route
青梅煮码
2023/03/02
4350
vue 中路径props的传参
python接口测试:如何将A接口的返回值传递给B接口
一种方式是可以通过数据库来获取,但是通过这次接口测试,我发现读取数据库有一个缺点:速度慢
冰霜
2022/03/15
2K0
React篇(029)-如何将参数传递给事件处理程序或回调函数?
你可以使用箭头函数来包装事件处理器并传递参数: <button onClick={() => this.handleClick(id)} /> 这相当于调用 .bind: <button onClick={this.handleClick.bind(this, id)} />
齐丶先丶森
2022/05/12
3.7K0
点击加载更多

相似问题

如何将链接的url=列表传递给Scrapy (url="")

10

django:列表传模板,传JS

224

如何将路径列表传递给函数?

12

如何将变量传递给Scrapy Spider

121

如何将文件路径传递给模块?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文