我是Python新手,使用Scrapy时遇到问题。我需要从URL下载一些PDF文件(URL指向PDF,但其中没有.pdf
。)并将它们存储在目录中。
到目前为止,我已经用标题填充了我的项目(因为你可以看到我已经将标题作为我之前请求的元数据)和正文(我从上一次请求的响应正文中得到)。
但是,当我在代码中使用with open
函数时,我总是从终端返回错误,如下所示:
exceptions.IOError: [Errno 2] No such file or directory:
这是我的代码:
def parse_objects:
....
item = Item()
item['title'] = titles.xpath('text()').extract()
item['url'] = titles.xpath('a[@class="title"]/@href').extract()
request = Request(item['url'][0], callback = self.parse_urls)
request.meta['item'] = item
yield request
def parse_urls(self,response):
item = response.meta['item']
item['desc'] = response.body
with open(item['title'][1], "w") as f:
f.write(response.body)
我正在使用item['title'][1]
,因为标题字段是一个列表,我需要使用名称的第二个项目保存PDF文件。据我所知,当我使用with open
并且没有这样的文件时,Python会自动创建一个文件。
我正在使用Python 3.4。
有人可以帮忙吗?
答案 0 :(得分:-1)
首先,您找到了需要下载的URL的Xpath。
将这些链接保存到一个列表中。
导入名为Urllib { import urllib }
使用关键字urllib.urlretrieve下载PDF文件。
例,
import urllib
url=[]
url.append(hxs.select('//a[@class="df"]/@href').extract())
for i in range(len(url)):
urllib.urlretrieve(url[i],filename='%s'%i)