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解析xml文件操作实例
Oct 05 Python
Tensorflow环境搭建的方法步骤
Feb 07 Python
使用Python实现微信提醒备忘录功能
Dec 04 Python
实例讲解Python中浮点型的基本内容
Feb 11 Python
Python实现Event回调机制的方法
Feb 13 Python
python实现批量注册网站用户的示例
Feb 22 Python
Django 多环境配置详解
May 14 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
python3爬虫中多线程进行解锁操作实例
Nov 25 Python
python 制作磁力搜索工具
Mar 04 Python
python自动化测试通过日志3分钟定位bug
Nov 20 Python
python+pytest接口自动化之token关联登录的实现
Apr 06 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
第二节 对象模型 [2]
2006/10/09 PHP
php获取用户IPv4或IPv6地址的代码
2012/11/15 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
PHP文件读取功能的应用实例
2015/05/08 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
PHP错误处理函数register_shutdown_function使用示例
2017/07/03 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
Jquery Ajax的Get方式时需要注意URL地方
2011/04/07 Javascript
jQuery之$(document).ready()使用介绍
2012/04/05 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
BootStrap响应式导航条实例介绍
2016/05/06 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
NodeJS仿WebApi路由示例
2017/02/28 NodeJs
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
使用Node.js在深度学习中做图片预处理的方法
2019/09/18 Javascript
[03:06]2018年度CS GO最具人气解说-完美盛典
2018/12/16 DOTA
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
Python中使用gzip模块压缩文件的简单教程
2015/04/08 Python
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
使用python实现画AR模型时序图
2019/11/20 Python
Python partial函数原理及用法解析
2019/12/11 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
详细分析Python collections工具库
2020/07/16 Python
Ratchet 模态框的实现
2020/08/19 HTML / CSS
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
商务代表岗位职责
2015/02/15 职场文书
焦裕禄纪念馆观后感
2015/06/09 职场文书
Go 在 MongoDB 中常用查询与修改的操作
2021/05/07 Golang
pytorch fine-tune 预训练的模型操作
2021/06/03 Python
python playwright之元素定位示例详解
2022/07/23 Python