python Scrapy框架原理解析

作者:划水De雁晓明 时间:2022-08-07 06:17:20 

Python 爬虫包含两个重要的部分:正则表达式和Scrapy框架的运用, 正则表达式对于所有语言都是通用的,网络上可以找到各种资源。

如下是手绘Scrapy框架原理图,帮助理解

python Scrapy框架原理解析

如下是一段运用Scrapy创建的spider:使用了内置的crawl模板,以利用Scrapy库的CrawlSpider。相对于简单的爬取爬虫来说,Scrapy的CrawlSpider拥有一些网络爬取时可用的特殊属性和方法:

$ scrapy genspider country_or_district example.python-scrapying.com--template=crawl

运行genspider命令后,下面的代码将会在example/spiders/country_or_district.py中自动生成。


# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from example.items import CountryOrDistrictItem

class CountryOrDistrictSpider(CrawlSpider):
 name = 'country_or_district'
 allowed_domains = ['example.python-scraping.com']
 start_urls = ['http://example.python-scraping.com/']

rules = (
   Rule(LinkExtractor(allow=r'/index/', deny=r'/user/'),
      follow=True),
   Rule(LinkExtractor(allow=r'/view/', deny=r'/user/'),
      callback='parse_item'),
 )

def parse_item(self, response):
   item = CountryOrDistrictItem()
   name_css = 'tr#places_country_or_district__row td.w2p_fw::text'
   item['name'] = response.css(name_css).extract()
   pop_xpath = '//tr[@id="places_population__row"]/td[@class="w2p_fw"]/text()'
   item['population'] = response.xpath(pop_xpath).extract()
   return item

爬虫类包括的属性:

  • name: 识别爬虫的字符串。

  • allowed_domains: 可以爬取的域名列表。如果没有设置该属性,则表示可以爬取任何域名。

  • start_urls: 爬虫起始URL列表。

  • rules: 该属性为一个通过正则表达式定义的Rule对象元组,用于告知爬虫需要跟踪哪些链接以及哪些链接包含抓取的有用内容。

来源:https://www.cnblogs.com/yxmings/p/14226696.html

标签:python,Scrapy,框架
0
投稿

猜你喜欢

  • Python列表推导式、字典推导式与集合推导式用法实例分析

    2022-04-10 10:34:00
  • js仿googl拖拽效果

    2007-09-29 13:16:00
  • Javascript学习第一季 一

    2008-06-24 17:51:00
  • Mac版Python3安装/升级的方式

    2021-03-07 13:24:40
  • Go标准库日志打印及同时输出到控制台与文件

    2024-04-26 17:22:40
  • Mysql Explain命令的使用与分析

    2024-01-29 08:39:04
  • 配置SQL Server 2000选项

    2010-04-25 11:01:00
  • Django的分页器实例(paginator)

    2023-06-23 03:22:35
  • 深刻理解Oracle数据库的启动和关闭

    2010-07-26 13:08:00
  • Oracle新建用户、角色,授权,建表空间的sql语句

    2012-07-11 15:39:24
  • 浅谈Python单向链表的实现

    2023-01-18 14:00:39
  • vue之bus总线的简单使用解读

    2024-06-05 15:30:41
  • 详细介绍mysql中limit与offset的用法

    2024-01-21 10:52:48
  • JavaScript的instanceof运算符学习教程

    2024-04-17 10:09:59
  • li隔行换色改进版

    2024-04-29 13:40:23
  • 源码编译安装MySQL8.0.20的详细教程

    2024-01-22 11:55:52
  • python实现磁盘日志清理的示例

    2021-05-10 07:08:21
  • FastApi如何快速构建一个web项目的实现

    2022-06-29 07:24:10
  • Python+Pygame制作简易版2048小游戏

    2022-12-01 18:05:03
  • SQL为什么不建议执行超过3表以上的多表关联查询

    2024-01-28 07:58:00
  • asp之家 网络编程 m.aspxhome.com