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操作SQLite简明教程
Jul 10 Python
教你用Python写安卓游戏外挂
Jan 11 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
Feb 23 Python
Python中XlsxWriter模块简介与用法分析
Apr 24 Python
使用Python抓取豆瓣影评数据的方法
Oct 17 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
Jan 20 Python
python求前n个阶乘的和实例
Apr 02 Python
python 星号(*)的多种用途
Sep 21 Python
Python importlib模块重载使用方法详解
Oct 13 Python
python 元组和列表的区别
Dec 30 Python
Python中的xlrd模块使用整理
Jun 15 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
mysql5写入和读出乱码解决
2006/11/25 PHP
php检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
2016/03/18 PHP
php中序列化与反序列化详解
2017/02/13 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
php和nginx交互实例讲解
2019/09/24 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
一个选择最快的服务器转向代码
2009/04/27 Javascript
jquery multiSelect 多选下拉框
2010/07/09 Javascript
javascript中RegExp保留小数点后几位数的方法分享
2013/08/13 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
基于angular实现三级联动的生日插件
2017/05/12 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
2018/11/23 Javascript
JavaScript"模拟事件"的注意要点详解
2019/02/13 Javascript
vue3修改link标签默认icon无效问题详解
2019/10/09 Javascript
[00:33]2016完美“圣”典风云人物:Sccc宣传片
2016/12/03 DOTA
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
2013/12/04 Python
使用Python的Twisted框架编写简单的网络客户端
2015/04/16 Python
Django Rest framework频率原理与限制
2019/07/26 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
css3实现简单的白云飘动背景特效
2020/10/28 HTML / CSS
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
世界上最全面的草药补充剂和顶级品牌维生素网站:HerbsPro
2019/01/20 全球购物
服装公司总经理岗位职责
2013/11/30 职场文书
服装设计专业自荐书范文
2013/12/30 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
酒店开业主持词
2015/07/02 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书