Каждый start_url мы должны создать один выходной файл CSV - PullRequest
0 голосов
/ 05 июня 2018

Я очень новичок в паукообразной терапии.Я извлекаю данные с сайта www.goodsearch.com.

Ниже код работает без ошибок:

import scrapy
class GoodsearchSpider(scrapy.Spider):
    name = 'goodsearch'
    allowed_domains = ['www.goodsearch.com/coupons/macys']
    start_urls = ['http://www.goodsearch.com/coupons/macys/']
    #start_urls = ['https://www.goodsearch.com/coupons/shutterfly']


    def parse(self, response):
        listings = response.xpath('//*[@id="main"]/div[1]/ul/li')
        for listing in listings:
            coupon_description = listing.xpath('.//span[@class="title"]/text()').extract_first()
            coupon_discount1 = listing.xpath('.//div[@class="top"]/text()').extract_first()
            coupon_discount2 = listing.xpath('.//div[@class="bottom"]/text()').extract_first()
            coupon_type = listing.xpath('.//div[@class="title"]/text()').extract_first()
            coupon_expire_data = listing.xpath('.//p/text()').extract_first()
            coupon_code = listing.xpath('.//div[1]/div[4]/span[1]/text()').extract_first()
            coupon_used_times = listing.xpath('.//span[@class="click-count"]/text()').extract_first()

            if coupon_discount1 is not None and coupon_discount2 is not None:
                print("")
            else:
                coupon_discount1 = ""
                coupon_discount2 = ""
                print(coupon_discount1)
            coupon_discount = coupon_discount1 + coupon_discount2


            yield {'Coupon Description': coupon_description,
                   'Coupon Discount': coupon_discount,
                   'Coupon Type': coupon_type,
                   'Coupon Expire Data': coupon_expire_data,
                   'Coupon Code': coupon_code,
                   'Coupon Used Times': coupon_used_times,
                   }

Если я передаю один start_url, он работает нормальнокак приведенный выше код.Я хочу взять ссылки из CSV-файла имеет входной файл.

входной CSV-файл (goodsearch_inputfile.csv)

link,store_name    
https://www.goodsearch.com/coupons/amazon,Amazon
https://www.goodsearch.com/coupons/target,Target
https://www.goodsearch.com/coupons/bestbuy,BestBuy

Каждая ссылка, которую мы должны генерировать один вывод CSVфайл означает, что мы должны сгенерировать три выходных файлаНе могли бы вы помочь мне с этим.

Я добавил ниже код, но бесполезно

'''    
    with open("goodsearch/input_file/goodsearch_inputfile.csv", "r") as links:
        for link in links:
            url, name = link.strip().split('|')
            start_urls = [url.strip()]
            fname = name
            print '----------------------------------'
            print 'name: {}, start urls: {}'.format(fname, start_urls) '''

1 Ответ

0 голосов
/ 05 июня 2018

Почему бы вам не загрузить CSV-файл в простой массив вместо использования разделенных и обычных файлов.Вы должны воспользоваться организованной структурой CSV-файла.

...