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

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

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
复制
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-29 07:13:06

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

代码语言:javascript
代码运行次数:0
运行
复制
# 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 21:14:18

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

代码语言:javascript
代码运行次数:0
运行
复制
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

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档