Python爬虫——Scrapy框架使用实例及执行过程

1、Scrapy框架使用实例

1、创建scrapy项目

scrapy项目名:scrapy_02_tc

scrapy startproject scrapy_02_tc

2、创建爬虫文件

爬虫文件名:tc_test

要访问的域名:https://gz.58.com/sou/?key=%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91&classpolicy=classify_D

scrapy genspider tc_test https://gz.58.com/sou/?key=%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91&classpolicy=classify_D

3、编写爬虫程序

修改配置文件:settings.py

ROBOTSTXT_OBEY = False
USER_AGENT = Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36

在 tc_test.py 文件中编写爬虫程序:

import scrapy


class TcTestSpider(scrapy.Spider):
    name = 'tc_test'
    allowed_domains = ['https://gz.58.com/sou/?key=%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91&classpolicy=classify_D']
    start_urls = ['https://gz.58.com/sou/?key=%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91&classpolicy=classify_D']

    def parse(self, response):

        # 使用xpath解析
        span = response.xpath('//div[@id="filter"]/div[@class="tabs"]/a/span')[0]
        print(span.extract())
        print(span.extract_first())  # 提取列表中第1个文本内容

Selector(选择器):Scrapy 提供的数据提取方法,Selector 基于 lxml ,支持 XPath 选择器、CSS 选择器以及正则表达式,功能全面,解析速度和准确度非常高。

  • extract():提取selector对象的文本内容

  • extract_first():提取selector列表中的第1个文本内容

response 属性:

  • response.text:获取响应对象的字符串格式数据
  • response.body:获取响应对象的二进制格式数据

2、Scrapy框架执行过程

Scrapy框架执行过程图如下:

在这里插入图片描述

Scrapy框架执行过程步骤描述:

  • ①:spiders把待爬取的 URL传递给引擎
  • ②:引擎再把url传递给调度器
  • ③:调度器将url生成请求对象放入指定队列中,再从队列中取出第一个请求交给引擎
  • ④:引擎再把请求传递给下载器
  • ⑤:下载器向互联网发送请求下载数据(response对象)
  • ⑥:然后下载器先把数据传递给引擎,引擎再把数据传递给spiders
  • ⑦:spider用xpath处理、分析,并提取出所需要的数据,得到解析结果,然后传递给引擎
  • ⑧:引擎判断解析结果是数据还是url,如果是数据,就把数据传递给管道,由管道进行保存;如果是url,则交给调度器

上述Scrapy框架执行过程会一直循环,直到没有要爬取的 URL 时才会停止。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐