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 相关文章推荐
400多行Python代码实现了一个FTP服务器
May 10 Python
python基础教程之数字处理(math)模块详解
Mar 25 Python
使用rst2pdf实现将sphinx生成PDF
Jun 07 Python
Python字典简介以及用法详解
Nov 15 Python
使用python在本地电脑上快速处理数据
Jun 22 Python
Python实现读写INI配置文件的方法示例
Jun 09 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
Dec 18 Python
Python基于mysql实现学生管理系统
Feb 21 Python
Python如何使用paramiko模块连接linux
Mar 18 Python
2021年值得向Python开发者推荐的VS Code扩展插件
Jan 25 Python
解决Python import .pyd 可能遇到路径的问题
Mar 04 Python
教你使用TensorFlow2识别验证码
Jun 11 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代码的53条建议
2008/03/27 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
2017/10/17 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
PHP如何通过date() 函数格式化显示时间
2020/11/13 PHP
js中更短的 Array 类型转换
2011/10/30 Javascript
node.js中的fs.symlinkSync方法使用说明
2014/12/15 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
javascript中indexOf技术详解
2015/05/07 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
微信小程序 小程序制作及动画(animation样式)详解
2017/01/06 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
新手vue构建单页面应用实例代码
2017/09/18 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
JSON基本语法及与JavaScript的异同实例分析
2019/01/04 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
python之wxPython应用实例
2014/09/28 Python
对Python中type打开文件的方式介绍
2018/04/28 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
python 实现单例模式的5种方法
2020/09/23 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
详解Html5原生拖拽操作
2018/01/12 HTML / CSS
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
澳大利亚波西米亚风情网上商店:Czarina
2019/03/18 全球购物
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
高三学习决心书
2014/03/11 职场文书
软件测试专业推荐信
2014/09/18 职场文书
小学英语教学反思范文
2016/02/15 职场文书
一文搞懂Python Sklearn库使用
2021/08/23 Python
JS的深浅复制详细
2021/10/16 Javascript