Scrapy的文件结构 以及 几个文件之间的联系

(!!!————本篇博客以 ” 伯乐在线 “ 网站为例————!!!)

几个文件之间的联系

    1. name.py(例如:a58tc.py) (以 58同城 为例)

        (1)通过一系列的 xpath 匹配获取到要爬取的内容(字段)
        (2)通过实例化items.py 中定义的类
                item = TaobaoItem()
        (3)把内容用字典的形式传给 items.py
                item['name'] = name
                item['title'] = title
                item['price'] = price

                yield item  # 把数据传给 items.py    

-------------------------------------------------------------------
    2. items.py(定义 scrapy 内部数据的 模型 的文件)

        class TongchengItem(scrapy.Item):
            mingzi = scrapy.Field()
            title = scrapy.Field()
            nian = scrapy.Field()

            def save(self):
                sql = 'insert into tc_test(mingzi,title,nian,licheng,rongliang,moshi,price,img) values(%s,%s,%s,%s,%s,%s,%s,%s)'
                data = (self['mingzi'],self['title'],self['nian'],self['licheng'],self['rongliang'],self['moshi'],self['price'],self['img'],)
                return (sql,data)  # 把值传给 pipelines.py
------------------------------------------------------------------      
    3. pipelines.py
        # 当我们的items 被返回的时候, 会自动调用我们的pipline类中的process_item()需要加到setting里面:))

        class Scrapy58LjwPipeline(object):
            def process_item(self,item,spider):

                (sql,data) = item.save()  # 返回值给pipelines.py
                mysql_58 = MysqlHelper() # 调用连接数据库类中的函数save()
                mysql_58.execute_modify_sql(sql,data) # 把数据存到数据库

                return item
-----------------------------------------------------------------
    4. settings.py
        ITEM_PIPELINES = {
            'scrapy_ljw.pipelines.Scrapy58LjwPipeline': 300,
        }

Scrapy的文件结构

1. items.py ———(是定义scrapy内部数据的文件 )
# (1) items.py 里的类都是继承 scrapy.item,如:
# (2) 这个类里边所有的属性都等于scrapy.Field()

    class BoleItem(scrapy.Item):
        title = scrapy.Field()      # name 是属性
        original_article = scrapy.Field()     # original_article 是属性
        translated_article = scrapy.Field()
        content = scrapy.Field()
2. pipelines.py———( pipelines.py :当我们的items被返回的时候,会自动调用我们的pipelines类中process_item(),需要加到settings.py里面:)
ITEM_PIPELINES={
        'today_scrapy.pipelines.StoreMysqlScrapyPipeline': 300,
    }
3. settings.py
    CONCURRENT_REQUESTS = 32     # 默认是16  类似于进程池开启了16个进程同时进行,提高效率

bole.py文件具体解释

  1. 一个url对应一个函数,这个函数用来解析url

    yield scrapy.Request(href,callback=self.parse_detail)

// 是搜索 而 / 只是找div下紧跟的文本内容

    <div>How old are you?
            <span>怎么老是你?</span>
    </div>
    //text()  找到的是How old are you? 和 怎么老是你?
    /text()   找到的是How old are you? 

Scrapy 框架的优点
1. 最大的优点是:可以提高效率,不用自己写多进程和多线程
2. settings.py 文件里的 CONCURRENT_REQUESTS = 32 如果不打开,则默认是16个(意思是类似于开了16的进程的效果,但它用的不一定是进程和线程,只是起到了同样的提高效率的作用)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Scrapy 框架中,items 文件是用来储存爬取到的数据的数据结构。 Items 文件中定义了一个 Python 类,每个类属性对应爬取到的一个数据字段。例如,如果你想要爬取某个网站上的新闻标题和内容,你可以在 items 文件中定义如下类: ``` class NewsItem(scrapy.Item): title = scrapy.Field() content = scrapy.Field() ``` 然后在爬虫文件中,你可以使用 `yield` 语句将爬取到的数据封装成一个 NewsItem 对象,并通过 `yield` 语句返回给 Scrapy 框架。 Scrapy 框架会自动将这些 NewsItem 对象传递给定义的 Item Pipeline,在 Item Pipeline 中,你可以对爬取到的数据进行处理和存储。 总的来说,items 文件主要用于定义储存爬取到的数据的数据结构,方便在爬虫和 Item Pipeline 之间传递数据。 ### 回答2: Scrapy的items文件是用于定义爬虫要提取的数据结构的Python模块。它的作用主要有以下几个方面。 首先,items文件定义了需要爬取的数据的字段和数据类型。通过在items文件中定义字段,我们可以明确爬虫要提取的数据的结构,并指导后续的数据处理和存储操作。例如,可以定义一个字段用于存储网页的标题,另一个字段用于存储网页的URL等。通过明确字段和数据类型,有助于在后续的代码中对数据进行处理和验证。 其次,items文件提供了数据的容器。Scrapy将爬取到的数据存储在一个叫做Item的对象中,这个对象就是由items文件定义的。通过在items文件中定义的字段,我们可以将爬取到的数据以统一的数据结构存储起来,方便后续的数据处理和存储。 此外,items文件还可以用于数据的清洗和预处理。在爬取数据的过程中,可能会有一些需要清洗或格式化的数据。通过在items文件中定义字段的时候,在字段的定义中添加数据处理方法,可以在爬取到数据后进行一些预处理操作,如去除空白字符、转换数据类型等。 总结来说,Scrapy的items文件主要用于定义爬虫要提取的数据结构,包括字段、数据类型和数据处理方法。它为爬虫提供了数据的容器和预处理功能,方便后续的数据处理和存储操作。 ### 回答3: Scrapy是一个用于爬取网站数据的Python框架。在Scrapy中,items文件是用来定义要爬取的数据结构的地方。它类似于数据库中的表结构或者类对应的属性。 items文件的主要作用是定义爬取数据的字段,并对字段进行规范化和筛选。在items文件中,我们可以定义各种字段,如标题、链接、发布时间、作者等等。通过定义多个字段,我们可以将网站上的各个数据项进行统一的抽象和归类。 使用items文件的好处是可以帮助我们更好地组织和管理爬取的数据。通过定义字段,我们可以清晰地了解每个数据项的含义和类型。此外,我们还可以在items文件中设置一些字段的约束条件,如数据类型、数据格式等,以确保数据的质量和完整性。这样就可以避免一些无效或者错误的数据被爬取和保存。 在Scrapy中,爬取的数据会以字典的形式存储在items中,可以通过定义字段的方式来提取和存储所需的数据。在爬虫中,当爬取到需要的数据时,可以使用items来实例化一个item对象,并将爬取到的数据存储在其中。然后,这些item对象会交给Scrapy的pipeline进行处理和持久化。 综上所述,items文件Scrapy中发挥着重要的作用,它定义了爬取数据的字段和规范,帮助我们更好地组织和管理爬取的数据。通过使用items文件,可以提高数据的质量和完整性,使得数据的抽取和存储变得更加简单和方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值