Skip to content

Latest commit

 

History

History
95 lines (72 loc) · 3.04 KB

学习笔记.md

File metadata and controls

95 lines (72 loc) · 3.04 KB

4399爬虫学习笔记

  1. 概述

    这份代码模拟网络爬虫工作流程的的前端扩展(frontier extension)部分。我们的目标是从4399域名下的一个URL: http://www.4399.com/flash/1.htm 开始,爬取N条游戏的基本信息(包括名称、分类、专题、时间、简介)等。这份代码使用的语言为Python (3.7),扩展部分的主要思路是队列+广度优先搜索,前端解析部分使用常用库requests, Beautiful Soup, re等,解析到的数据用pandas存进excel文件,进一步可以和建立数据库对接。

  2. 实现部分

    包括funcs.pymodules.py两个版本,前者是脚本式的,后者是函数模块式的。

  3. 技术收获

    1. python队列不是基础类型,使用时需要from queue import Queue

      • 构造函数可传入数字指定队列大小上限
      • get(), put()为基本使用方法
      • 其他属性或方法有qsize(), maxsize, empty(), queue()
    2. 前端匹配find(name='div',attrs={'class':'name'})

      • soup的find()可以级联,返回类型为bs4.element.Tag
      • findAll()同理,返回Tag的列表
      • 别忘记正则库re.findall()。他还有用大括号提取匹配内容的能力,但是我没有用到。http://www.cppcns.com/jiaoben/python/172301.html
    3. 数据处理df.to_excel(path)

      • #新建时指定列名
        df = pd.DataFrame(
        	columns = ['g_tit','g_cls','g_size','g_date','g_spe','g_intro']
        )
      • #添加行,需要赋值,相当于inplace
        #添加内容用字典列表表示,可以添加多条记录
        df = df.append([g_dict],ignore_index=True)
    4. Spyder的使用:preference选择editor

      • 调整显示空格符号与否
      • 调整tab是否总是缩进(不要选,经常用来自动补全)
      • 设置单击后高亮的延迟时间
      • 设置缩进等于几个空格
      • 设置是否用空格代替缩进(建议是,4个空格=1个indent)
      • 还有黑色皮肤
      • 可以ctrl+Enter部分代码解释执行,方便调试
      • ipdb调试时使用ctrl+shift+c进行复制

4.知识收获

  1. 复习python的参数传递

    def outfunc():
    	x = 0
    	qq = Queue()
    	infunc(x,qq)
    	print(x)
    	print(qq.queue)
    	return 
    
    def infunc(a,q):
    	q.put(a)
    	a+=4
    	print(' '*a + 'a=' + str(a))
    	print(' '*a + 'q=' + str(q.queue))
    	if a==12:
    		return 
    	else:
    		infunc(a,q)
    In [27]:outfunc()
        a=4
        q=deque([0])
            a=8
            q=deque([0, 4])
                a=12
                q=deque([0, 4, 8])
    0
    deque([0, 4, 8])
    #=========================
    #不可变/基础类型 值传递
    #可变/类 引用传递
    #Integer 代替 int 实现引用传递。未测试
  2. http协议的编码规则https://www.cnblogs.com/xdouby/p/8308915.html

    在消息头指定Content-Type