python - 将图像路径名称保存在数据库中
问题描述
我已经用 Scrapy 成功爬取了一个网站上的图片数据,并将图片保存在一个文件夹中。但我想将图像的路径名保存在 mysql 数据库中。
就像下面蜘蛛的结果一样,我想将数据“路径”转发到管道,但我不知道如何选择它
'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'}],
我的管道.py:
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()
我的物品.py
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()
我想将图像路径的名称保存到数据库中。熟悉这个问题的朋友,请告诉我。谢谢你。
解决方案
如果图像列表是您项目的一部分,您可以像这样选择它:item['images'][0]['path']
。
您可以通过更改 store_db 方法将其添加到管道中,如下所示:
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()
推荐阅读
- c# - 来自代码的队列 Azure devops YAML 管道不接受运行时参数
- odoo - 如何在 pos 收据 odoo 中打印订单参考名称
- bixby - 如何在bixby中删除部分中的边距
- python-3.x - sqlalchemy alchemy ProgrammingError怎么解决?
- python - Vscode - 如何更改“organizeImports”的最大行值?
- ruby-on-rails - 编码的url作为rails路由中的参数
- c# - 如何在 ASP.NET MVC 中将数组从一个视图和操作传递到另一个视图和操作?
- python - 将行从数据框转换为列,匹配共享列值上的行
- python - 找不到满足要求的版本 statsmodels.api [ Python ]
- sql - 在红移表中使用 CHECK 约束