scrapy爬取数据存入表格中

1、Pipeline:

2、settings:

3、items:

4、spider:

也可以用scrapy框架自带存储功能存储:

存储json格式:scrapy crawl 项目名称 -o 项目名称.json -s FEED_EXPORT_ENCIDING=utf-8
存储csv(表格)形式:scrapy crawl 项目名称 -o 项目名称.csv -s FEED_EXPORT_ENCIDING=utf-8

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Scrapy爬取图片并将其存储到MySQL,需要遵循以下步骤: 1. 在Scrapy项目创建一个MySQL数据库连接。(可以使用PyMySQL库) 2. 创建一个Item类来存储图像链接和图像标题等信息。 3. 在spider使用XPath或CSS选择器来提取图像链接和标题等信息,并通过Item将其传递给pipelines。 4. 在pipelines使用requests库下载图像并将其存储到本地文件系统。 5. 然后使用Python的MySQL库将图像路径和其他相关信息插入到MySQL数据。 以下是一个简单的示例代码: ```python import scrapy from scrapy.pipelines.images import ImagesPipeline from scrapy.exceptions import DropItem import pymysql from PIL import Image class MySQLPipeline(object): def __init__(self, db_host, db_port, db_user, db_password, db_name): self.db_host = db_host self.db_port = db_port self.db_user = db_user self.db_password = db_password self.db_name = db_name self.conn = None self.cursor = None @classmethod def from_crawler(cls, crawler): return cls( db_host=crawler.settings.get('DB_HOST'), db_port=crawler.settings.get('DB_PORT'), db_user=crawler.settings.get('DB_USER'), db_password=crawler.settings.get('DB_PASSWORD'), db_name=crawler.settings.get('DB_NAME'), ) def open_spider(self, spider): self.conn = pymysql.connect( host=self.db_host, port=self.db_port, user=self.db_user, password=self.db_password, db=self.db_name, charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor ) self.cursor = self.conn.cursor() def close_spider(self, spider): self.conn.close() def process_item(self, item, spider): try: # 将图片下载到本地 image_path = item['image_urls'][0] image_title = item['title'] image_extension = image_path.split('.')[-1] image_name = f'{image_title}.{image_extension}' image_path = image_path.replace('thumb180', 'large') image_request = scrapy.Request(image_path) image_response = scrapy.utils.python.get_val_from_func( image_request, 'response', spider=spider ) image_content = image_response.body image = Image.open(BytesIO(image_content)) image.save(f'{image_name}', quality=95) # 将图片信息插入到数据 sql = "INSERT INTO images (title, path) VALUES (%s, %s)" self.cursor.execute(sql, (image_title, image_name)) self.conn.commit() except Exception as e: print(e) raise DropItem(f"Error processing item: {item['image_urls']}") ``` 在Scrapy的settings.py文件需要添加以下配置: ```python ITEM_PIPELINES = { 'scrapy.pipelines.images.ImagesPipeline': 1, 'myproject.pipelines.MySQLPipeline': 2, } IMAGES_STORE = '/path/to/your/images/folder' DB_HOST = 'localhost' DB_PORT = 3306 DB_USER = 'root' DB_PASSWORD = 'password' DB_NAME = 'database_name' ``` 在spider需要使用ImageItem来存储图像链接和标题等信息: ```python from scrapy import Spider from myproject.items import ImageItem class MySpider(Spider): name = 'myspider' start_urls = ['http://example.com'] def parse(self, response): image_link = response.css('img::attr(src)').extract_first() image_title = response.css('img::attr(alt)').extract_first() item = ImageItem() item['image_urls'] = [image_link] item['title'] = image_title yield item ``` 这样,当爬虫运行时,它将下载图像并将其信息插入到MySQL数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值