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 使用SMTP发送邮件的代码小结
Sep 21 Python
Python实现 多进程导入CSV数据到 MySQL
Feb 26 Python
Python标准库sched模块使用指南
Jul 06 Python
Django的分页器实例(paginator)
Dec 01 Python
python三引号输出方法
Feb 27 Python
python用for循环求和的方法总结
Jul 08 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
python用pip install时安装失败的一系列问题及解决方法
Feb 24 Python
浅谈python3 构造函数和析构函数
Mar 12 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
May 09 Python
python为什么要安装到c盘
Jul 20 Python
Python使用pandas导入xlsx格式的excel文件内容操作代码
Dec 24 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
环境会对咖啡种植有什么影响
2021/03/03 咖啡文化
浅析php插件 HTMLPurifier HTML解析器
2013/07/01 PHP
php使用exec shell命令注入的方法讲解
2013/11/12 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
果断收藏9个Javascript代码高亮脚本
2016/01/06 Javascript
第一次接触神奇的Bootstrap表单
2016/07/27 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
2016/12/15 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
JS中appendChild追加子节点无效的解决方法
2018/10/14 Javascript
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
javascript自定义日期比较函数用法示例
2019/07/22 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
python将字典内容存入mysql实例代码
2018/01/18 Python
python生成tensorflow输入输出的图像格式的方法
2018/02/12 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
2018/05/19 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
python版大富翁源代码分享
2018/11/19 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
python递归函数用法详解
2020/10/26 Python
浅析python实现动态规划背包问题
2020/12/31 Python
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
Harman Audio官方商店:购买JBL、Harman Kardon、Infinity和AKG
2019/12/05 全球购物
生物科学专业个人求职信范文
2013/12/07 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
安全检查汇报材料
2014/12/26 职场文书
介绍信如何写
2015/01/31 职场文书
幼儿园庆六一主持词
2015/06/30 职场文书