51Testing软件测试论坛

标题: Scrapy框架架构[2] [打印本页]

作者: 八戒你干嘛    时间: 2019-6-17 17:34
标题: Scrapy框架架构[2]
完成的爬虫代码:2. items.py部分代码:
  1. import scrapy
  2. class QsbkItem(scrapy.Item):
  3.      author = scrapy.Field()
  4.      content = scrapy.Field()
复制代码
3. pipeline部分代码:
  1. import json

  2. class AbcspiderPipeline(object):
  3.        def __init__(self):

  4.       self.items = []

  5.      def process_item(self, item, spider):
  6.      self.items.append(dict(item))
  7.      print("="*40)
  8.      return item

  9.      def close_spider(self,spider):
  10.      with open('qsbk.json','w',encoding='utf-8') as fp:
  11.            json.dump(self.items,fp,ensure_ascii=False)
复制代码
运行scrapy项目:运行scrapy项目。需要在终端,进入项目所在的路径,然后scrapy crawl [爬虫名字]即可运行指定的爬虫。如果不想每次都在命令行中运行,那么可以把这个命令写在一个文件中。以后就在pycharm中执行运行这个文件就可以了。比如现在新创建一个文件叫做start.py,然后在这个文件中填入以下代码:


  1. from scrapy import cmdline

  2. cmdline.execute("scrapy crawl qsbk".split())
复制代码
CrawlSpider在上一个糗事百科的爬虫案例中。我们是自己在解析完整个页面后获取下一页的url,然后重新发送一个请求。有时候我们想要这样做,只要满足某个条件的url,都给我进行爬取。那么这时候我们就可以通过CrawlSpider来帮我们完成了。CrawlSpider继承自Spider,只不过是在之前的基础之上增加了新的功能,可以定义爬取的url的规则,以后scrapy碰到满足条件的url都进行爬取,而不用手动的yield Request。
CrawlSpider爬虫:创建CrawlSpider爬虫:之前创建爬虫的方式是通过scrapy genspider [爬虫名字] [域名]的方式创建的。如果想要创建CrawlSpider爬虫,那么应该通过以下命令创建:


  1. scrapy genspider -c crawl [爬虫名字] [域名]
复制代码
LinkExtractors链接提取器:使用LinkExtractors可以不用程序员自己提取想要的url,然后发送请求。这些工作都可以交给LinkExtractors,他会在所有爬的页面中找到满足规则的url,实现自动的爬取。以下对LinkExtractors类做一个简单的介绍:


  1. class scrapy.linkextractors.LinkExtractor(
  2.       allow = (),
  3.       deny = (),
  4.       allow_domains = (),
  5.       deny_domains = (),
  6.       deny_extensions = None,
  7.       restrict_xpaths = (),
  8.       tags = ('a','area'),
  9.       attrs = ('href'),
  10.       canonicalize = True,
  11.       unique = True,
  12.       process_value = None
  13. )
复制代码
主要参数讲解:









作者: Miss_love    时间: 2020-12-30 15:12
支持分享




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2