首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将图像路径名保存在数据库中

问将图像路径名保存在数据库中
EN

Stack Overflow用户
提问于 2019-08-05 19:47:43
回答 1查看 170关注 0票数 1

我已经用Scrapy成功地抓取了一个网站上的图像数据,并将图像保存在一个文件夹中。但我想将图像的路径名保存在mysql数据库中。

就像下面的爬行器的结果一样,我想将数据“路径”转发到管道,但我不知道如何选择它

代码语言:javascript
复制
'images': [{'checksum': '75873dcc0944e29787525197648aa1a6',
             'path': 'full/91e6d13e3ad32def287f98199c8bbe1915c71773.jpg',
             'url': 'https://cdn.sindonews.net/dyn/620/content/2019/08/05/12/1426977/masa-kampanye-jadwal-pemilu-hingga-e-voting-jadi-isu-revisi-uu-pemilu-qoQ.jpg'}],

我的pipelines.py:

代码语言:javascript
复制
import mysql.connector

class SkripsiPipeline(object):

    def __init__(self):
        self.create_connection()
        # dispatcher.connect(self.close_spider, signals.close_spider)
        # self.create_table()

    def create_connection(self):
        self.conn = mysql.connector.connect(
            host = '127.0.0.1',
            password = '',
            user = 'root',
            database = 'news'
        )
        self.curr = self.conn.cursor()

    def process_item(self, item, spider):
        self.store_db(item)
        return item

    def store_db(self,item):
        self.curr.execute("INSERT INTO news_tb (url, title, author, time, crawl_time, image_urls, images, content) values (%s,%s,%s,%s,%s,%s,%s,%s)",(
            item['url'][0],
            item['title'][0],
            item['author'][0],
            item['time'][0],
            item['crawl_time'][0],
            item['image_urls'][0],
            item['content'][0]
        ))
        self.conn.commit()

我的items.py

代码语言:javascript
复制
import scrapy
class SkripsiItem(scrapy.Item):
    url = scrapy.Field()
    title = scrapy.Field()
    author = scrapy.Field()
    time = scrapy.Field()
    crawl_time = scrapy.Field()
    image_urls = scrapy.Field()
    images = scrapy.Field()
    content = scrapy.Field()

我想将图像路径的名称保存到数据库中。任何熟悉这个问题的人,请让我知道。谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-05 19:58:18

如果图片列表是你的项目的一部分,你可以像这样选择它:item['images'][0]['path']。

您可以通过更改store_db方法将其添加到管道,如下所示:

代码语言:javascript
复制
def store_db(self,item):
    path = item['images'][0]['path'].split('/')[1]
    self.curr.execute("INSERT INTO news_tb (url, title, author, time, crawl_time, image_urls, images, content, path) values (%s,%s,%s,%s,%s,%s,%s,%s,%s)",(
        item['url'][0],
        item['title'][0],
        item['author'][0],
        item['time'][0],
        item['crawl_time'][0],
        item['image_urls'][0],
        item['content'][0],
        path
    ))
    self.conn.commit()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57357984

复制
相关文章

相似问题

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