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 15 Python
微信 用脚本查看是否被微信好友删除
Oct 28 Python
python批量下载抖音视频
Jun 17 Python
python实现获取单向链表倒数第k个结点的值示例
Oct 24 Python
Python autoescape标签用法解析
Jan 17 Python
如何定义TensorFlow输入节点
Jan 23 Python
如何解决tensorflow恢复模型的特定值时出错
Feb 06 Python
Python使用Numpy模块读取文件并绘制图片
May 13 Python
Python+OpenCV图像处理——图像二值化的实现
Oct 24 Python
Jupyter Notebook 远程访问配置详解
Jan 11 Python
python基于机器学习预测股票交易信号
May 25 Python
Python机器学习应用之基于线性判别模型的分类篇详解
Jan 18 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获取远程文件大小
2015/10/20 PHP
关于php中一些字符串总结
2016/05/05 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
Javasipt:操作radio标签详解
2013/12/30 Javascript
js实现文章文字大小字号功能完整实例
2014/11/01 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
2016/05/27 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
2018/01/31 jQuery
Vue底层实现原理总结
2018/02/17 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
python入门基础之用户输入与模块初认识
2016/11/14 Python
Python列表删除的三种方法代码分享
2017/10/31 Python
Linux下通过python获取本机ip方法示例
2019/09/06 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
python脚本和网页有何区别
2020/07/02 Python
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
YOOX台湾:意大利奢侈品电商
2018/10/13 全球购物
写给女生的道歉信
2014/01/08 职场文书
家长对小学生的评语
2014/01/28 职场文书
蓝颜请假条
2014/04/11 职场文书
出生医学证明书
2014/09/15 职场文书
工作证明英文模板
2014/10/21 职场文书
2014年终个人总结报告
2015/03/09 职场文书
办公经费申请报告
2015/05/15 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android