Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
K
kb
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 2
    • Issues 2
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Operations
    • Operations
    • Incidents
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • granite
  • kb
  • Wiki
    • Code review
  • it桔子

Last edited by ylb Dec 02, 2021
Page history

it桔子

评审目标

1. 实现方案的正确性
2. 代码的坏味道
3. 规范性

评审日期

2021-12-02

评审人

李林坳,杨龙斌

被评审人

袁波

参考链接

  • 代码入口
  • 文档链接

流程

1. 被评审人需先整体描述需要解决的问题、解决流程 (被评审人讲解过程中,评审人可以记录问题,不要打断被评审者的思路)
2. 被评审人讲完,评审人和与会人员可以提问题
3. 评审人进行评审 (被评审者或者与会人员记录评审待改进的内容,有时并不是只针对被评审者,而是所有编码者)
4. 评审完成之后,落实待修改项,主要是缺陷和规范性

值得学习的地方

1. 文档很全面,通过文档可以了解到review所需信息。
2. 将这个项目相关的items定义在单独的地方,结构上更加清晰,一些特有的工具类页同理

建议

  • 流程可以合并,更易于部署管理

    • 三个爬虫的代码结构很相似,如果不是业务上有拆分的需求是完全可以合并在一起的
  • 不必要的请求头处理

    • Request.__init__ 中headers_raw_to_dict方法可以生成一个类属性,避免每次请求都算一遍请求头
  • 更易测试的解析

    • 解析函数应只是从响应信息中取得所需信息,对解析后的信息可以进行再处理或者生成Item,解析代码应不涉及结果生成。
    • 解析函数接收的参数是Response对象,应替换为字符串。解析文件
  • 代理中间件问题

    • 添加代理的方式不对
      class ProxyMiddleware:
      
          @classmethod
          def from_crawler(cls, crawler):
              settings = crawler.settings
              return cls(settings.get('PROXY_WITH_CONNECT'))
        
          def __init__(self, proxy):
              self.proxy = proxy
        
          def process_request(self, request, spider):
              request.meta['proxy'] = self.proxy  # 代理ip
              spider.logger.debug('request meta: %s' % request.meta)
  • 文件引入方式混用

    • 建议统一使用项目绝对路径
  • 测试方案优化

    • 不用再修改settings.py或者scrapy.cfg文件,在test.py中用命令行启动的参数优先级是最高
      from scrapy import cmdline
      
      name = "zongju_pc_spider"
      cmd_settings = {
          'LOG_LEVEL': 'DEBUG',
          'REDIS_URL': 'redis://localhost:6379/0',
          'PROXY_WITH_CONNECT': 'http://127.0.0.1:8888',
          # 'CONCURRENT_REQUESTS': 1
      }
      
      cmd = 'scrapy crawl {0} {1}'.format(name, ' '.join(['-s %s=%s' % (k, v) for (k, v) in cmd_settings.items()]))
      print(cmd)
      cmdline.execute(cmd.split())
  • 任务模块

    • 重复代码。
    • reader,writer的作用被替代。文件地址

改进落实

时间:

改进人:

监督人:
Clone repository
  • README
  • basic_guidelines
  • basic_guidelines
    • basic_guidelines
    • dev_guide
    • project_build
    • 开发流程
  • best_practice
  • best_practice
    • AlterTable
    • RDS
    • azkaban
    • create_table
    • design
    • elasticsearch
    • elasticsearch
      • ES运维
    • logstash
View All Pages