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 30 Python
Python使用xlrd读取Excel格式文件的方法
Mar 10 Python
django 微信网页授权认证api的步骤详解
Jul 30 Python
100行Python代码实现每天不同时间段定时给女友发消息
Sep 27 Python
python模块导入的方法
Oct 24 Python
解决pycharm上的jupyter notebook端口被占用问题
Dec 17 Python
通过python调用adb命令对App进行性能测试方式
Apr 23 Python
Python-for循环的内部机制
Jun 12 Python
python链表类中获取元素实例方法
Feb 23 Python
Matlab求解数组中的最大值及它所在的具体位置
Apr 16 Python
Python机器学习之基础概述
May 19 Python
OpenCV绘制圆端矩形的示例代码
Aug 30 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导入Excel到MySQL的方法
2011/04/23 PHP
表格展示无限级分类(PHP版)
2012/08/21 PHP
php之CodeIgniter学习笔记
2013/06/17 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
新页面打开实际尺寸的图片
2006/08/25 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
JS与HTML结合使用marquee标签实现无缝滚动效果代码
2016/07/05 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
Vue.js项目模板搭建图文教程
2017/09/20 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
基于vue2.0的活动倒计时组件countdown(附源码下载)
2018/10/09 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
小程序实现列表倒计时功能
2021/01/29 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
用Python写的图片蜘蛛人代码
2012/08/27 Python
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
详解Python中的文件操作
2016/08/28 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
Python 实现删除某路径下文件及文件夹的实例讲解
2018/04/24 Python
python爬取内容存入Excel实例
2019/02/20 Python
如何在mac环境中用python处理protobuf
2019/12/25 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
详解使用postMessage解决iframe跨域通信问题
2019/11/01 HTML / CSS
Brasty波兰:香水、化妆品、手表网上商店
2019/04/15 全球购物
高中军训广播稿
2014/01/14 职场文书
酒店经理职责
2014/01/30 职场文书
学校四风对照检查材料
2014/08/28 职场文书
2014年体育工作总结
2014/11/24 职场文书
基于python实现银行管理系统
2021/04/20 Python
python高温预警数据获取实例
2022/07/23 Python