400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

图片路径存储且item的json化是怎样的-创新互联

图片路径存储且item的json化是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

为瑞昌等地区用户提供了全套网页设计制作服务,及瑞昌网站建设行业解决方案。主营业务为成都网站设计、成都网站制作、瑞昌网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

1.item_completed()方法

2.在pipline中重写item_completed方法

3.创建md5函数

4. 在item中添加字段

import scrapy
class XkdDribbbleSpiderItem(scrapy.Item):
    title = scrapy.Field()
    image_url = scrapy.Field()
    date = scrapy.Field()
    # 添加图片路径到item中
    image_path = scrapy.Field()
    # 加页面的url地址添加到item中
    url = scrapy.Field()
    # 添加url的哈希值字段
    url_id = scrapy.Field()

5. 将item在spider中返回

import scrapy
from urllib import parse
from scrapy.http import Request
from datetime import datetime
from ..items import XkdDribbbleSpiderItem
from ..utils.md5_tool import get_md5
class DribbbleSpider(scrapy.Spider):
    name = 'dribbble'
    allowed_domains = ['dribbble.com']
    start_urls = ['https://dribbble.com/stories']
def parse(self, response):
        # 获取a标签的url值
        # selector
        a_selectors = response.css('div.teaser a')
        for a_selector in a_selectors:
            image_url = a_selector.css('img::attr(src)').extract()[0]
            page_url = a_selector.css('::attr(href)').extract()[0]
            yield Request(url=parse.urljoin(response.url, page_url), callback=self.parse_analyse,meta={'a_image_url': image_url})
    def parse_analyse(self, response):
        title = response.css('header h2::text').extract_first()
        image_url = response.meta.get('a_image_url')
        date_raw = response.css('p span.date::text').extract()[0]
        date_str = date_raw.strip()
        date = datetime.strptime(date_str, '%b %d, %Y').date()
        item = XkdDribbbleSpiderItem()
        item['title'] = title
        item['image_url'] = [image_url]
        item['date'] = date
        item['url'] = response.url
        item['url_id'] = get_md5(response.url)
        # item数据模型进行落地,数据持久化
        yield item

6.创建JsonSavePipeline,用于写入item到文件中

import codecs
import json
class JsonSavePipeline:
    def process_item(self, item, spider):
        # 将spider中返回的item转化为字典
        file = codecs.open('blog.json', mode='a')
        dict_item = dict(item)
        # 将字典json化
        line = json.dumps(dict_item, ensure_ascii=False) + '\n'
        # 写入到文件
        file.write(line)
        # 再次返回item
        file.close()

7.在settings文件中添加JsonSavePipeline

'XKD_Dribbble_Spider.pipelines.JsonSavePipeline': 2,

关于图片路径存储且item的json化是怎样的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联-成都网站建设公司行业资讯频道了解更多相关知识。


网页名称:图片路径存储且item的json化是怎样的-创新互联
网页网址:http://mbwzsj.com/article/pghpe.html

其他资讯

让你的专属顾问为你服务