使用scrapy / sitemaps报废具有不同物料的产品

时间:2019-09-17 19:09:05

标签: python web-scraping scrapy

问候社区成员,

我正在Jupyter Notebook上使用python 3进行项目开发,我想使用站点地图来剪贴产品,到目前为止,我要做的是从站点地图中的URL获取名为df的数据框,然后我希望抓取每个网址使用Xpath,这是我的代码的结构


from scrapy.spiders import SitemapSpider

class ProductSpider(SitemapSpider):

    name = 'ProductSpider'

    sitemap_urls = ['the sitemap']
    sitemap_rules = [('products', 'parse_product')]

    def parse_product(self, response):
        print('parse_product url:', response.url)

        yield {'url': response.url}



from scrapy.crawler import CrawlerProcess

c = CrawlerProcess({
    'USER_AGENT': 'Mozilla/5.0',

    # save in file as CSV
    'FEED_FORMAT': 'csv',     # csv
    'FEED_URI': 'urls.csv', #
})
c.crawl(ProductSpider)
c.start()


import pandas as pd

df=pd.read_csv('urls.csv')

直到现在一切正常,我将数据框命名为df,现在我想抓取数据框内的每个网址以废弃产品

import scrapy



class MySpider(scrapy.Spider):
    custom_settings = {'FEED_URI' : 'products.csv'}
    name = 'MySpider'
    allowed_domains='website'
    first_page=[df.url[1]]
    all_others=[df.url[i] for i in range(2,400)]


    start_urls = first_page+all_others

    def parse(self, response):
        for product in response.selector.xpath("//div[@class='container']"):
            yield{
                'title' = product.xpath("//div[class='title clearfix']/h1/text()").extract()
                'img' = product.xpath("//div/a/img[@class='image-slide-link']").extract()
                'description'=product.xpath("//div/p/ul/text()").extract()
                'composition'=product.xpath("//div[@class='c-product__content']/text()").extract()
                'Id'=product.xpath("//div[@class='product-json']/@Id/text()").extract()
                 }
                for item in zip(title,image,description,composition):
            scraped_info = {
                    'title' : item[0],
                    'image' : item[1],
                    'description': item[2],
                    'composition' : [item[3]]}
            yield scraped_info


d = CrawlerProcess({
    'USER_AGENT': 'Mozilla/5.0',
    'FEED_FORMAT': 'csv',    
    'FEED_URI': 'products.csv', 
    })


d.crawl(Myspider)
d.start()

但是最后我得到了一个空文件products.cv,有人可以帮助我找到解决方案吗?我已经考虑了三个星期了!

谢谢!

1 个答案:

答案 0 :(得分:0)

问题已解决:

我犯了一个愚蠢的错误,我不应该添加项目,因为我所有的信息都存储在zip中,而不是csv文件中,所以我只需要删除一些行,更确切地说是:项目行和直接检索信息。