python Scrapy框架原理解析

作者:划水De雁晓明 时间:2022-08-07 06:17:20 

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对象元组,用于告知爬虫需要跟踪哪些链接以及哪些链接包含抓取的有用内容。

来源:https://www.cnblogs.com/yxmings/p/14226696.html

标签:python,Scrapy,框架
0
投稿

猜你喜欢

  • Python3.x和Python2.x的区别介绍

    2022-01-05 12:36:27
  • python基础之迭代器与生成器

    2022-02-20 07:07:54
  • PHP获取当前相对于域名目录的方法

    2023-08-19 18:47:31
  • 详解TensorFlow在windows上安装与简单示例

    2021-06-01 23:54:31
  • 在select语句中使用top的一些小技巧

    2009-03-12 12:21:00
  • Pytorch使用MNIST数据集实现基础GAN和DCGAN详解

    2021-11-17 02:14:33
  • 在Python中操作文件之read()方法的使用教程

    2021-10-28 19:23:46
  • Python编程把二叉树打印成多行代码

    2023-06-24 15:12:57
  • 使用MHTML 解决 data URI scheme 的浏览器兼容问题

    2009-05-11 12:30:00
  • PyTorch中的神经网络 Mnist 分类任务

    2023-04-07 00:34:49
  • python实现Excel文件转换为TXT文件

    2021-01-15 05:24:54
  • 对pyqt5之menu和action的使用详解

    2022-03-12 23:00:37
  • Python pyecharts模块安装与入门教程

    2023-09-11 06:52:41
  • python 用opencv调用训练好的模型进行识别的方法

    2022-11-14 11:57:23
  • Python使用pandas对数据进行差分运算的方法

    2021-09-28 06:56:07
  • MYSQL数据库常用命令集合

    2009-02-26 16:01:00
  • 基于python批量处理dat文件及科学计算方法详解

    2021-05-16 18:00:12
  • Python def函数的定义、使用及参数传递实现代码

    2023-02-23 04:54:34
  • Python处理JSON时的值报错及编码报错的两则解决实录

    2023-11-10 07:12:07
  • 垂直栅格与渐进式行距(下)

    2009-07-09 16:52:00
  • asp之家 网络编程 m.aspxhome.com