成都Python培训
达内成都Python培训中心

15023458194

成都Python培训 > Python资讯 >成都python培训机构:Scrapy框架原理

成都python培训机构:Scrapy框架原理

  • 时间:2021-01-05 16:12
  • 发布:成都达内
  • 来源:成都达内

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中自动生成。

1 # -*- coding: utf-8 -*-

2 import scrapy

3 from scrapy.linkextractors import LinkExtractor

4 from scrapy.spiders import CrawlSpider, Rule

5 from example.items import CountryOrDistrictItem

6

7

8 class CountryOrDistrictSpider(CrawlSpider):

9 name = 'country_or_district'

10 allowed_domains = ['example.python-scraping.com']

11 start_urls = ['http://example.python-scraping.com/']

12

13 rules = (

14 Rule(LinkExtractor(allow=r'/index/', deny=r'/user/'),

15 follow=True),

16 Rule(LinkExtractor(allow=r'/view/', deny=r'/user/'),

17 callback='parse_item'),

18 )

19

20 def parse_item(self, response):

21 item = CountryOrDistrictItem()

22 name_css = 'tr#places_country_or_district__row td.w2p_fw::text'

23 item['name'] = response.css(name_css).extract()

24 pop_xpath = '//tr[@id="places_population__row"]/td[@class="w2p_fw"]/text()'

25 item['population'] = response.xpath(pop_xpath).extract()

26 return item

爬虫类包括的属性:

name: 识别爬虫的字符串。

allowed_domains: 可以爬取的域名列表。如果没有设置该属性,则表示可以爬取任何域名。

start_urls: 爬虫起始URL列表。

rules: 该属性为一个通过正则表达式定义的Rule对象元组,用于告知爬虫需要跟踪哪些链接以及哪些链接包含抓取的有用内容。

上一篇:成都python程序员培训:Matplotlib坐标轴设置
下一篇:成都python培训:最全正则表达式

成都python培训机构:Scrapy框架原理

成都python程序员培训:Matplotlib坐标轴设置

成都python培训机构:python实现小程序ping

成都python培训:python实现traceroute程序

  • 关注微信公众号

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

  • 视频学习QQ群

    添加QQ群:1143617948

    免费领取达内课程视频学习资料

Copyright © 2018 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
江西省

贵州省

广西省

海南省