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的Flask框架中@app.route的用法教程
Mar 31 Python
编写Python脚本来获取mp3文件tag信息的教程
May 04 Python
Python中atexit模块的基本使用示例
Jul 08 Python
Python 绘图库 Matplotlib 入门教程
Apr 19 Python
解决pandas使用read_csv()读取文件遇到的问题
Jun 15 Python
Python txt文件加入字典并查询的方法
Jan 15 Python
聊聊python里如何用Borg pattern实现的单例模式
Jun 06 Python
详解Python中的分支和循环结构
Feb 11 Python
pytorch 常用函数 max ,eq说明
Jun 28 Python
如何通过命令行进入python
Jul 06 Python
Python包资源下载路径报404解决方案
Nov 05 Python
如何用Python徒手写线性回归
Jan 25 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中simplexml_load_string函数使用说明
2011/01/01 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
2015/10/09 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
2019/03/22 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
HTML5附件拖拽上传drop & google.gears实现代码
2011/04/28 Javascript
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
阿里云ecs服务器中安装部署node.js的步骤
2016/10/08 Javascript
JS实现列表页面隔行变色效果
2017/03/25 Javascript
Javascript之图片的延迟加载的实例详解
2017/07/24 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
python 矢量数据转栅格数据代码实例
2019/09/30 Python
使用Puppeteer爬取微信文章的实现
2020/02/11 Python
python实现IOU计算案例
2020/04/12 Python
中国最大的团购网站:聚划算
2016/09/21 全球购物
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
求职者简历中的自我评价
2013/10/20 职场文书
自我评价范文点评
2013/12/04 职场文书
小学语文国培感言
2014/03/04 职场文书
幼儿园中班开学寄语
2014/04/03 职场文书
授权委托书怎么写
2014/09/25 职场文书
股东出资证明书范例
2014/10/04 职场文书
学生会个人总结范文
2015/02/15 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
如何用JS实现简单的数据监听
2021/05/06 Javascript