scrapy爬虫的一个实例

一:建立一个Scrapy爬虫工程
打开cmd:输人scrapy startproject python123,如下截图:
这里输入的意思是定义一个工程,它的名字叫python123.
此时在d盘中可以看到生成的scrapy的工程
在这里插入图片描述
介绍上述文件的作用:
scrapy.cfg 这个配置,是将爬虫放在特定的服务器上,并且在服务器配置好相关的操作接口.对于本机使用爬虫,不需要改变部署的配置文件.
init.py 用户不需要编写
items.py 需要继承scrapy库提供的ietms类,对于一般的例子用户不需要编写
middlewares.py 如果用户需要扩展middlewares的功能,则需要编写.
pipelines.py 指的是框架中的pipelines模块
settings.py 指的是Scrapy爬虫的文件,如果需要优化爬虫,则需要设置这个文件对应的配置项.
spiders 是在存放python123demo工程建立的爬虫

二:在工程中产生一个Scrapy爬虫
输入命令:scrapy genspider demo python123.io
在这里插入图片描述
三、配置产生的spider爬虫
在文件当中生成了一个demo.py文件,然后对该文件进行修改,代码如下:

# -*- coding: utf-8 -*-
import scrapy


class DemoSpider(scrapy.Spider):
    name = 'demo'
    #allowed_domains = ['python123.io']
    start_urls = ['http://python123.io/ws/demo.html']

    def parse(self, response):
        fname=response.url.split('/')[-1]
        with open(fname,'wb') as f:
            f.write(response.body)
        self.log('Save file %s.' %fname)
                                 

1 )是一个面向对象编写的类,这个类叫DemoSpider
2 )由于我们的名字叫demo,所以这个类名也叫demospider,名字也可以叫我们任何想叫的名字.
3 )这个类必须是继承与scrapy.Spider的子类.
4 )这里有个变量叫name,被赋值为demo,说明当前爬虫的名字叫demo.
5 )allowed_domains这个是用户提交给命令行的命名.这个爬虫在爬取网站的时候只能爬取这个域名以下的相关链接.
6 )start_urls以列表的形式包含一个或多个url就是scrapy框架要爬取的初始页面.
7 )def parse是解析页面一个空的方法.
8 )pass是处理响应,可以解析从网上爬取的内容,并形成字典类型,同时对网络中爬取的内容发现其中隐含的新的url.

程序的改进,使用yield生成器:

# -*- coding: utf-8 -*-
import scrapy


class DemoSpider(scrapy.Spider):
    name = 'demo'
    def start_requests(self):
        urls=[
              'http://python123.io/ws/demo.html'
            ]
        for url in urls:
            yield scrapy.Request(url=url,callback=self.parse)

    def parse(self, response):
        fname=response.url.split('/')[-1]
        with open(fname,'wb') as f:
            f.write(response.body)
        self.log('Save file %s.' %fname)
                                 

四、运行爬虫,获取网页
在命令行cmd执行这个命令,输入:crapy crawl demo
在这里插入图片描述
此时,就爬取成功了,在目录下生成了demo.html文件
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scrapy爬虫的流程可以简单地分为以下几个步骤: 1. **定义爬虫:** 创建一个 Scrapy 爬虫项目,并定义一个爬虫类,指定要爬取的网站的域名和起始 URL。 2. **发送请求:** Scrapy 会自动创建一个请求对象,并将其发送到指定的 URL。 3. **解析响应:** 当服务器返回响应后,Scrapy 会自动调用指定的回调函数,对响应进行解析,并从中提取数据。 4. **存储数据:** 在解析响应的过程中,可以将提取到的数据存储到本地文件或数据库中。 5. **跟进链接:** 解析响应时,可以从中提取链接,并使用 Scrapy 的 Request 对象对其进行跟进,继续爬取更多的数据。 6. **重复步骤 3-5:** 重复以上步骤,直到爬取到足够的数据或达到设定的条件。 下面是一个简单的 Scrapy 爬虫的示例代码,演示了这个流程: ```python import scrapy class MySpider(scrapy.Spider): name = 'myspider' start_urls = ['http://example.com'] def parse(self, response): # 解析响应,提取数据 data = {'title': response.css('title::text').get()} # 存储数据 self.save_data(data) # 跟进链接 for link in response.css('a::attr(href)').getall(): yield scrapy.Request(response.urljoin(link), callback=self.parse) def save_data(self, data): # 存储数据到本地文件或数据库中 pass ``` 这个爬虫会从 http://example.com 开始爬取网页,并对每个链接进行跟进,直到爬取到足够的数据或达到设定的条件。在解析响应时,它会提取标题,并将数据存储到本地文件或数据库中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值