gpt4 book ai didi

python - 想抓取翻车

转载 作者:行者123 更新时间:2023-12-04 07:43:53 25 4
gpt4 key购买 nike

简而言之,我必须抓取 Flipkart 并将数据存储在 Mongodb 中。
首先,使用 MongoDB Atlas给自己一个免费的托管 Mongodb 服务器。测试您是否能够使用 python 的库 pymongo 连接到它。
其次,安装Scrapy并使用它的文档让自己对使用 Scrapy 框架进行抓取变得友好。
然后,转到以下2个网址
男士上衣👉 https://www.flipkart.com/clothing-and-accessories/topwear/pr?sid=clo%2Cash&otracker=categorytree&p%5B%5D=facets.ideal_for%255B%255D%3DMen
女鞋👉 https://www.flipkart.com/womens-footwear/pr?sid=osp,iko&otracker=nmenu_sub_Women_0_Footwear
每个页面有 40 个产品,您必须从每个起始 Url(大约 2000 个产品)中抓取最多 25 个页面并将数据存储在 Mongodb(数据库:,集合:flipkart)中。数据应该使用 Scrapy Mongodb Pipelines 从 Scrapy 框架直接插入到 Mongodb 中。
您抓取的每个产品都应具有以下数据:

  • name [存储为字符串]
  • brand [存储为字符串]
  • original_price [存储为 float ]
  • sale_price [存储为 float ]
  • image_url [存储为字符串]
  • product_page_url [存储为字符串]
  • product_category [存储为字符串] [它可以包含 2 个值“女鞋”或“男上衣”]

  • 但是我只能抓取品牌、标题销售价格和产品 url 原始价格有两个字符串并且它变得不匹配并且我无法将数据保存在 mongodb 中是否有人可以帮助我。
    from ..items import FlipkartItem
    import json
    import scrapy
    import re


    class FlipkartscrapySpider(scrapy.Spider):
    name = 'flipkartscrapy'

    def start_requests(self):
    urls = ['https://www.flipkart.com/clothing-and-accessories/topwear/pr?sid=clo%2Cash&otracker=categorytree&p%5B%5D=facets.ideal_for%255B%255D%3DMen&page={}',
    'https://www.flipkart.com/womens-footwear/pr?sid=osp%2Ciko&otracker=nmenu_sub_Women_0_Footwear&page={}']

    for url in urls:
    for i in range(1,25):
    x = url.format(i)
    yield scrapy.Request(url=x, callback=self.parse)


    def parse(self, response):
    items = FlipkartItem()
    name = response.xpath('//*[contains(concat( " ", @class, " " ), concat( " ", "IRpwTa", " " ))]').xpath('text()').getall()
    brand = response.xpath('//*[contains(concat( " ", @class, " " ), concat( " ", "_2WkVRV", " " ))]').xpath('text()').getall()
    original_price = response.xpath('//*[contains(concat( " ", @class, " " ), concat( " ", "_3I9_wc", " " ))]').xpath('text()').getall()
    sale_price = response.xpath('//*[contains(concat( " ", @class, " " ), concat( " ", "_30jeq3", " " ))]').xpath('text()').getall()
    image_url = response.css('._1a8UBa').css('::attr(src)').getall()
    product_page_url =response.css('._13oc-S > div').css('::attr(href)').getall()

    items['name'] = name
    items['brand'] = brand
    items['original_price'] = original_price
    items['sale_price'] = sale_price
    items['image_url'] = image_url
    items['product_page_url'] = 'https://www.flipkart.com' + str(product_page_url)

    yield items
    原价输出是这样的 original_price :
    ['₹', '999', '₹', '1,499', '₹', '1,888', '₹', '2,199', '₹', '1,499', '₹', '1,069', '₹', '1,099', '₹', '1,999', '₹', '2,598', '₹', '1,299', '₹', '1,999', '₹', '899', '₹', '1,099', '₹', '1,699', '₹', '1,399', '₹', '999', '₹', '999', '₹', '1,999', '₹', '1,099', '₹', '1,199', '₹', '999', '₹', '999', '₹', '1,999', '₹', '1,287', '₹', '999', '₹', '1,199', '₹', '899', '₹', '999', '₹', '1,849', '₹', '1,499', '₹', '999', '₹', '999', '₹', '899', '₹', '1,999', '₹', '1,849', '₹', '3,499', '₹', '2,397', '₹', '899', '₹', '1,999']

    最佳答案

    items['original_price'] = [original_price[i]+original_price[i+1] for i in range(0, len(original_price), 2)]

    关于python - 想抓取翻车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67293952/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com