使用Scrapy的基础步骤(内含代码+详解)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39884947/article/details/89341901

麻烦先学会安装Scrapy不会请百度或留言
以爬取笔趣阁小说列表为例

  • 创建一个scrapy项目
scrapy startproject test1
  • 创建该项目下的一个spider爬虫
#注意你要进入项目目录才能创建爬虫
#scrapy genspider 爬虫名 爬虫爬取的网站域名
scrapy genspider  testspider www.xbiquge.la
  • 编辑spider爬虫代码
    先要明白以下定义字段的含义

name:是每个项目唯一的名字区分不同的spider

allowed_domains:是允许爬取的域名,如果初始或后续的请求链接不是这个域名下的,则请求链接会被过滤掉

start_urls :包含了spider在启动时爬取的url列表,初始请求是由它来定义的

parse方法: 是spider的一个方法。默认情况下,被调用时start_urls里面的链接构成的请求完成下载执行后,返回的响应response就会作为唯一的参数传递给这个函数。该方法负责解析返回的响应,提取数据或者进一步生成要处理的请求

我们在parse()方法中对返回的response进行处理

rom test1.items import Test1Item
class TestspiderSpider(scrapy.Spider):
    name = 'testspider'#创建时定义好了
    allowed_domains = ['www.xbiquge.la']#创建时定义好了
    start_urls = ['http://www.xbiquge.la/xiaoshuodaquan/']#需要修改地方
    def parse(self, response):
        item = Test1Item()
        lists = response.xpath("//div[@class='novellist']//li")
        #是在Item文件中定义的一个类,后续会讲
        for i in lists:
            item['name']=i.xpath(".//a//text()").extract()[0]
            item['url']=i.xpath('.//a//@href').extract()[0]
            yield item
            #yield会将item字段传给pipeline文件稍后会将这个pipeline
            #至于yield为何物,麻烦请好好学学python
  • 使用item文件
    在获取到数据的时候,使用不同item来存放不同的数据
class ExampeItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    name=scrapy.Field()
    url=scrapy.Field()
    #使用时要创建类的实例并且为字典类型(见上方的操作)
  • pipelines文件 处理数据
    我们先要在setting文件中启动对应的pipeline
ITEM_PIPELINES = {
    'test1.pipelines.Test1Pipeline': 300,
}

其次在pipeline文件中对我们数据要做的具体操作:

class Test1Pipeline(object):
    def open_spider(self,spider):
    # 在爬虫开启的时候执行,仅执行一次
        print("*"*10)
    def process_item(self, item, spider):
    # 不return的情况下,另一个权重较低的pipeline就不会获得item 这个会一直执行
        print(item)
        #return
    def close_spider(self,spider):
     #在爬虫关闭的时候执行,仅执行一次
        print("*"*10)

#注意这里我们只输出我们访问到的所有数据,如果要存储到文件中请自行修改

  • 启动爬虫
    温馨建议:必要时可以修改setting文件的LOG_LEVEL=“WARNING” 这样启动爬虫不会跳出一大堆 默认为debug级别log信息 具体什么是log百度吧。也可以尝试一下看看修改后有什么不同
scrapy crawl testspider

以上我们一个简易Scrapy项目已经完成了,更多的细节以及操作今后慢慢细讲

猜你喜欢

转载自blog.csdn.net/qq_39884947/article/details/89341901