python Scrapy框架原理解析


Posted in Python onJanuary 04, 2021

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对象元组,用于告知爬虫需要跟踪哪些链接以及哪些链接包含抓取的有用内容。

以上就是python Scrapy框架原理解析的详细内容,更多关于Scrapy框架原理的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
详解Python中映射类型的内建函数和工厂函数
Aug 19 Python
Python新手们容易犯的几个错误总结
Apr 01 Python
Python 判断是否为质数或素数的实例
Oct 30 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 Python
Python实现将照片变成卡通图片的方法【基于opencv】
Jan 17 Python
python 寻找list中最大元素对应的索引方法
Jun 28 Python
浅谈关于Python3中venv虚拟环境
Aug 01 Python
Python中的正则表达式与JSON数据交换格式
Jul 03 Python
Python猜数字算法题详解
Mar 01 Python
Python使用进程Process模块管理资源
Mar 05 Python
树莓派升级python的具体步骤
Jul 05 Python
Pandas之缺失数据的实现
Jan 06 Python
如何用 Python 处理不平衡数据集
Jan 04 #Python
Python创建简单的神经网络实例讲解
Jan 04 #Python
python实现跨年表白神器--你值得拥有
Jan 04 #Python
Python列表元素删除和remove()方法详解
Jan 04 #Python
python3列表删除大量重复元素remove()方法的问题详解
Jan 04 #Python
关于python中remove的一些坑小结
Jan 04 #Python
python中remove函数的踩坑记录
Jan 04 #Python
You might like
聊天室php&mysql(一)
2006/10/09 PHP
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
PHP使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
thinkPHP5.0框架独立配置与动态配置方法
2017/03/17 PHP
使用vs code编辑调试php配置的方法
2019/01/29 PHP
yii2.0框架场景的简单使用示例
2020/01/25 PHP
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
2013/05/08 Javascript
jQuery实现长文字部分显示代码
2013/05/13 Javascript
让复选框只能选择一项的方法
2013/10/08 Javascript
jquery单行文字向上滚动效果示例
2014/03/06 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
json+jQuery实现的无限级树形菜单效果代码
2015/08/27 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
微信小程序使用Promise简化回调
2018/02/06 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
2018/12/03 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
2018/10/15 Python
Pandas实现DataFrame按行求百分数(比例数)
2019/12/27 Python
如何基于python实现脚本加密
2019/12/28 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
T3官网:头发造型工具
2019/12/26 全球购物
JSF界面控制层技术
2013/06/17 面试题
中职生自荐信范文
2014/06/15 职场文书
房屋授权委托书范本
2014/10/07 职场文书
社区活动总结
2015/02/04 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL