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通过urllib2爬网页上种子下载示例
Feb 24 Python
使用Python获取Linux系统的各种信息
Jul 10 Python
Python实现遍历数据库并获取key的值
May 17 Python
Python Numpy:找到list中的np.nan值方法
Oct 30 Python
深入解析Python小白学习【操作列表】
Mar 23 Python
Python函数装饰器常见使用方法实例详解
Mar 30 Python
python监控nginx端口和进程状态
Sep 06 Python
python递归调用中的坑:打印有值, 返回却None
Mar 16 Python
Scrapy中如何向Spider传入参数的方法实现
Sep 28 Python
Python模拟登录和登录跳转的参考示例
Oct 30 Python
利用Python将多张图片合成视频的实现
Nov 23 Python
pandas将list数据拆分成行或列的实现
Dec 13 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
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
与数据库连接
2006/10/09 PHP
php中fsockopen用法实例
2015/01/05 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
javascript实现的图片预览功能
2017/03/25 Javascript
解决Vue使用mint-ui loadmore实现上拉加载与下拉刷新出现一个页面使用多个上拉加载后冲突问题
2017/11/07 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
python列表操作使用示例分享
2014/02/21 Python
Python中的异常处理学习笔记
2015/01/28 Python
PYTHON 中使用 GLOBAL引发的一系列问题
2016/10/12 Python
PYQT5实现控制台显示功能的方法
2019/06/25 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
Python实现制度转换(货币,温度,长度)
2019/07/14 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
什么是python的id函数
2020/06/11 Python
python中二分查找法的实现方法
2020/12/06 Python
Python运算符+与+=的方法实例
2021/02/18 Python
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
PHP面试题-$message和$$message的区别
2015/12/08 面试题
银行实习生的自我评价
2013/12/09 职场文书
英语系本科生求职信范文
2013/12/18 职场文书
市场营销管理制度
2014/01/29 职场文书
刚毕业大学生自荐信范文
2014/02/20 职场文书
招商引资工作汇报材料
2014/10/28 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
2016入党心得体会范文
2016/01/06 职场文书
56句经典英文座右铭
2019/08/09 职场文书
python内置进制转换函数的操作
2021/06/02 Python
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis