找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2944|回复: 1

scrapy 将抓取内容中的图片下载到本地并替换内容中的原始...

1

主题

1

帖子

1

积分

贫民

积分
1
damonfu 发表于 2017-11-16 00:28:56 | 显示全部楼层 |阅读模式
使用scrapy采集的文章里面有很多图片,都是远程图片,我想把这些远程图片都下载下来,然后把图片地址全都改成相对路径。
比如这篇文章的内容 http://news.163.com/17/1115/2...
里面的图片路径都是类似 http://dingyue.nosdn.127.net/... 这种
我想把里面的图片都下载到本地,然后再把路径保存再item 里面。
def parse_article(self, response):    item = response.meta['item']    item['title'] = response.xpath("//div[@id='content']//h1[@class='entry-title']/text()").extract()[0]    article_imgs = response.xpath("//div[@id='content']/article/div[@class='entry-content']//img")    for img in article_imgs:        img_src = img.xpath("/@src").extract()[0]        file_name = os.path.basename(img_src)        real_name = file_name.split('.')[-2]        print("图片名称", real_name)        save_path = 'images/shopify/' + str(real_name)        print("保存路径", save_path)        local_path = self.save_img(img_src, save_path)        http_img_path = urljoin('http://www.tiangr.com', '/wp_content/uploads/' + local_path)        print("替换路径", http_img_path)        ####################        到这里之后不知道该怎么替换原来的图片路径。        ####################    item['content'] = response.xpath("//div[@id='content']/article/div[@class='entry-content']").extract()[0]    item['cimage_urls'] = response.xpath("//div[@id='content']//header[@class='entry-header']/img//@src").extract()     # 提取图片链接    yield itemdef save_img(self, img_url, file_name):    """    保存图片    :param img_url 图片地址    :param file_name 文件名称    :return:    """    image_path = img_url.split('.')    extension = image_path.pop()    if len(extension) > 3:        extension = 'jpg'    img_url = urljoin('http://dingyue.nosdn.127.net', img_url)    u = urllib.request.urlopen(img_url)    data = u.read()    f = open(file_name + '.' + extension, 'wb')    f.write(data)    f.close()    return file_name + '.' + extension
我在看文档的时候,看到虽然scrapy有ImagePipeline可以下载图片,但只能将下载的图片存到一个字段里。
所以请教一下大家在这种情况下是怎么操作的?
万分感谢。

回复

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
一念 发表于 2017-11-17 09:55:33 | 显示全部楼层
我准备学习scrapy,等我会了再解答你,这个问题应该不会很难
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表