评审目标
1. 实现方案的正确性
2. 代码的坏味道
3. 规范性
评审日期
2021-12-02
评审人
李林坳,杨龙斌
被评审人
袁波
参考链接
流程
1. 被评审人需先整体描述需要解决的问题、解决流程 (被评审人讲解过程中,评审人可以记录问题,不要打断被评审者的思路)
2. 被评审人讲完,评审人和与会人员可以提问题
3. 评审人进行评审 (被评审者或者与会人员记录评审待改进的内容,有时并不是只针对被评审者,而是所有编码者)
4. 评审完成之后,落实待修改项,主要是缺陷和规范性
值得学习的地方
1. 文档很全面,通过文档可以了解到review所需信息。
2. 将这个项目相关的items定义在单独的地方,结构上更加清晰,一些特有的工具类页同理
建议
-
流程可以合并,更易于部署管理
- 三个爬虫的代码结构很相似,如果不是业务上有拆分的需求是完全可以合并在一起的
-
不必要的请求头处理
-
Request.__init__ 中
headers_raw_to_dict
方法可以生成一个类属性,避免每次请求都算一遍请求头
-
Request.__init__ 中
-
更易测试的解析
- 解析函数应只是从响应信息中取得所需信息,对解析后的信息可以进行再处理或者生成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的作用被替代。文件地址
改进落实
时间:
改进人:
监督人: