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常见数制转换实例分析
May 09 Python
Python中函数参数设置及使用的学习笔记
May 03 Python
python append、extend与insert的区别
Oct 13 Python
Python 使用Numpy对矩阵进行转置的方法
Jan 28 Python
在windows下使用python进行串口通讯的方法
Jul 02 Python
python绘制BA无标度网络示例代码
Nov 21 Python
浅谈keras使用中val_acc和acc值不同步的思考
Jun 18 Python
python--shutil移动文件到另一个路径的操作
Jul 13 Python
Python如何爬取b站热门视频并导入Excel
Aug 10 Python
Python logging自定义字段输出及打印颜色
Nov 30 Python
Selenium关闭INFO:CONSOLE提示的解决
Dec 07 Python
python中的3种定义类方法
Nov 27 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调用Java对象的方法
2006/10/09 PHP
php $_ENV为空的原因分析
2009/06/01 PHP
Javascript 通过json自动生成Dom的代码
2010/04/01 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
由浅入深剖析Angular表单验证
2016/07/14 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
2016/12/22 Javascript
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
微信小程序实现自动定位功能
2018/10/31 Javascript
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
vue组件实现移动端九宫格转盘抽奖
2020/10/16 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
Python 异常处理的实例详解
2017/09/11 Python
基于Python fminunc 的替代方法
2020/02/29 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
plt.figure()参数使用详解及运行演示
2021/01/08 Python
CSS3 边框效果
2019/11/04 HTML / CSS
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
亚洲最大旅游体验平台:KKday
2017/10/21 全球购物
康拓普公司Java笔面试
2016/09/23 面试题
简历中自我评价怎么写
2014/02/12 职场文书
项目合作意向书范本
2014/04/01 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
国企干部对照检查材料
2014/08/22 职场文书
论群众路线学习笔记
2014/11/06 职场文书
单位接收函格式
2015/01/30 职场文书
世界名著读书笔记
2015/06/25 职场文书
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python