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 import自定义模块方法
Feb 12 Python
python中dir函数用法分析
Apr 17 Python
Django中模版的子目录与include标签的使用方法
Jul 16 Python
python 爬虫出现403禁止访问错误详解
Mar 11 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
Feb 02 Python
Python数据结构与算法(几种排序)小结
Jun 22 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
Python数据可视化实现漏斗图过程图解
Jul 20 Python
解决Pyinstaller打包软件失败的一个坑
Mar 04 Python
Python机器学习应用之基于线性判别模型的分类篇详解
Jan 18 Python
Python绘画好看的星空图
Mar 17 Python
Python+Tkinter制作专属图形化界面
Apr 01 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』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
Yii2 输出xml格式数据的方法
2016/05/03 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
ThinkPHP实现附件上传功能
2017/04/27 PHP
json-lib出现There is a cycle in the hierarchy解决办法
2010/02/24 Javascript
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
JavaScript操作表单实例讲解(上)
2016/06/20 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
vue 进阶之实现父子组件间的传值
2019/04/26 Javascript
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
python获取引用对象的个数方式
2019/12/20 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
网游商务专员求职信
2013/10/15 职场文书
汽车运用工程毕业生自荐信
2013/10/29 职场文书
元宵节主持词
2014/03/25 职场文书
分公司任命书
2014/06/06 职场文书
煤矿安全协议书
2014/08/20 职场文书
大学生迟到检讨书500字
2014/10/17 职场文书
2014村书记党建工作汇报材料
2014/11/02 职场文书
2015年元旦联欢晚会活动总结
2014/11/28 职场文书
解除租房协议书
2014/12/03 职场文书
Python实现的扫码工具居然这么好用!
2021/06/07 Python
redis不能访问本机真实ip地址的解决方案
2021/07/07 Redis
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技
Tomcat配置访问日志和线程数
2022/05/06 Servers