对python爬虫中scrapy框架代码学习理解

经过对scrapy框架的简单学习后,对其编码过程进行如下简单的梳理,以便于自己今后的复习。与大多数爬虫编写过程基本一致,主要过程如下:

1、首先创建工程文件:scrapy startproject xxxPro

通过cd进入工程文件: cd xxxPro

通过scrapy genspider XXX www.xxx.com创建爬虫文件XXX,

2、创建好爬虫文件后,注释掉#allowed_domains = [‘www.xxx.com’]

import scrapy
class TupianSpider(scrapy.Spider):
    name = 'tupian'
    #allowed_domains = ['www.xxx.com']
    start_urls = ['http://www.sccnn.com/sheyingtuku/renwuqinggan/20221004-301271.html']

    def parse(self, response):
     src=response.xpath('//[@id="LeftBox"]/div[1]/div/font/img/@src').extract_first()
   Name = response.xpath('//*[@id="LeftBox"]/div[1]/h2/text()').extract_first()
    print(src,Name)

解析好的内容提取时,须用到.extract()方法

4、数据的持久化存储

1)、基于终端指令的数据持久化存储,此方法使用较少不推荐,以编码做简单记录

def parse(self, response):
    src = response.xpath('//*[@id="LeftBox"]/div[1]/div/font/img/@src').extract_first()
    Name = response.xpath('//*[@id="LeftBox"]/div[1]/h2/text()').extract_first()
    #print(src,Name)
    #先添加一个字典,然后将字典加装到列表当中。同时通过return进行返回(这一步具体操作视情况使用)
    dict = {
        'src':src,
        'Name':Name
    }
    img.append(dict)
    return img
       2)、基于管道的数据持久化存储,这里主要需使用到items.py和piplines.py
 基于管道的数据持久化存储,分为3步:
      一、实例化item对象,步骤为:
       items.py   步骤一:
class TupianproItem(scrapy.Item):
    # define the fields for your item here like:
    src = scrapy.Field()
    Name = scrapy.Field()
    pass
步骤二:这里需要在爬虫文件里进行导包:from  tupianPro.items  import  TupianproItem
   def parse(self, response):
    src = response.xpath('//*[@id="LeftBox"]/div[1]/div/font/img/@src').extract_first()
    Name = response.xpath('//*[@id="LeftBox"]/div[1]/h2/text()').extract_first()
    # print(src,Name)
    item = TupianproItem()
    item['src']=src
    item['Name']=Name
    yield item #通过yield上传给管道
  二、piplines.py管道接收item对象,同时编写本地保存路径,具体编码过程如下:# useful for handling different item types with a single interface
from itemadapter import ItemAdapter

class TupianproPipeline:
    fp = None
    #重写父类的一个方法:该方法只在开始爬虫的时候被调用一次
    #此方法可理解为创建文件夹的第二种方法
    def open_spider(self,spider):
        self.fp = open('./tupian.txt','w',encoding='utf-8')
    #专门用来处理item类型对象
    #该方法可以接收爬虫文件提交过来的item对象
    #该方法每接收一个item对象就会被调用一次
    def process_item(self, item, spider):
        src = item['src']
        Name = item['Name']
        self.fp.write(src+':'+Name+'\n')
        return item
    def close_spider(self,spider):
        print('结束爬虫!!!')
        fp.close()

Original: https://blog.csdn.net/T_123465/article/details/127200049
Author: T_123465
Title: 对python爬虫中scrapy框架代码学习理解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/791632/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球