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爬虫
Dec 25 Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
pyqt5利用pyqtDesigner实现登录界面
Mar 28 Python
python scipy卷积运算的实现方法
Sep 16 Python
代码总结Python2 和 Python3 字符串的区别
Jan 28 Python
python学习将数据写入文件并保存方法
Jun 07 Python
python 线程的五个状态
Sep 22 Python
Python通过yagmail实现发送邮件代码解析
Oct 27 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
Jan 27 Python
pytorch 实现L2和L1正则化regularization的操作
Mar 03 Python
68行Python代码实现带难度升级的贪吃蛇
Jan 18 Python
python基础之//、/与%的区别详解
Jun 10 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 radio 单选框获取与保持值的实现代码
2010/05/15 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
EasyUI中datagrid在ie下reload失败解决方案
2015/03/09 Javascript
js智能获取浏览器版本UA信息的方法
2016/08/08 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
2016/12/18 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
使用D3.js制作图表详解
2017/08/13 Javascript
React实践之Tree组件的使用方法
2017/09/30 Javascript
javaScript中"=="和"==="的区别详解
2018/03/16 Javascript
详解小程序原生使用ES7 async/await语法
2018/08/06 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
Python中处理时间的几种方法小结
2015/04/09 Python
python简单文本处理的方法
2015/07/10 Python
python下调用pytesseract识别某网站验证码的实现方法
2016/06/06 Python
python django事务transaction源码分析详解
2017/03/17 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
详解爬虫被封的问题
2019/04/23 Python
详解Python sys.argv使用方法
2019/05/10 Python
python 环境搭建 及python-3.4.4的下载和安装过程
2019/07/20 Python
使用python实现名片管理系统
2020/06/18 Python
如何写好优秀的创业计划书
2014/01/30 职场文书
中秋手机店促销方案
2014/06/16 职场文书
相亲活动方案
2014/08/26 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
React中的Context应用场景分析
2021/06/11 Javascript
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫