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计算一个序列的平均值的方法
Jul 11 Python
python 与GO中操作slice,list的方式实例代码
Mar 20 Python
python 对象和json互相转换方法
Mar 22 Python
matplotlib 输出保存指定尺寸的图片方法
May 24 Python
python学习开发mock接口
Apr 28 Python
使用 Python 处理 JSON 格式的数据
Jul 22 Python
解析python的局部变量和全局变量
Aug 15 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
Aug 19 Python
用python解压分析jar包实例
Jan 16 Python
基于python实现简单网页服务器代码实例
Sep 14 Python
python+flask编写一个简单的登录接口
Nov 13 Python
Python re.sub 反向引用的实现
Jul 07 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 页面执行时间计算代码
2008/12/04 PHP
php curl模拟post请求小实例
2013/11/13 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
关于Jqzoom的使用心得 jquery放大镜效果插件
2010/04/12 Javascript
优化javascript的执行效率一些方法总结
2013/12/25 Javascript
jquery单行文字向上滚动效果示例
2014/03/06 Javascript
JS简单计算器实例
2015/01/20 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
初识Node.js
2015/03/20 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
jQuery焦点图左右转换效果
2016/12/12 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
Python中函数的用法实例教程
2014/09/08 Python
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
Python简单生成随机数的方法示例
2018/03/31 Python
python 实现判断ip连通性的方法总结
2018/04/22 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
2012/06/04 HTML / CSS
英国领先的体验日提供商:Buyagift
2019/04/19 全球购物
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
信息管理专业自荐书
2014/06/05 职场文书
银行授权委托书格式
2014/10/10 职场文书
商业门面租房协议书
2014/11/25 职场文书
无保留意见审计报告
2015/06/05 职场文书
使用Django实现商城验证码模块的方法
2021/06/01 Python
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android
PHP中多字节字符串操作实例详解
2021/08/23 PHP