Day32 网络编程 笔记

正则模块
# 正则表达式
# 元字符 :
   . 匹配除了回车以外的所有字符
   \w 数字字母下划线
   \d 数字
   \n \s \t 回车 空格 和 tab
   ^ 必须出现在一个正则表达式的最开始,匹配开头
   $ 必须出现在一个正则表达式的最后,匹配结尾
   | 或
   a|b 要么取左边的要么取右边的
   ()|() 分组中的或 一定是长的在前面 短的在后面
   [] 在同一个位置上可能出现的所有字符都放在组里
   [^] 在同一个位置上不能出现的所有字符都放在组里
   () 对于一整个组做量词约束 ; python 分组优先
# 量词 :
   * 0、多次
   + 1、多
   ? 0、1
   {} 具体的 {n},{n,m},{n,}
# 问号的用法
# 惰性匹配 : 量词+?    表示使用惰性匹配
# 分组优先 findall split ;取消分组优先 (?:。。。)
# 分组命名 (?P<name>...)

 ret=re.findall(r"\d+","1-2*(60+(-40.35/5)-(-4*3))")
 print(ret)
# 有的时候 不想要的内容需要被匹配出来
# 你不想要的东西包含着你想要的东西
 ret=re.findall(r"\d+\.\d+|(\d+)","1-2*(60+(-40.35/5)-(-4*3))")
 ret.remove('')
 print(ret)

 

--------------*******----------------

 

1.爬虫网站

import re
from urllib.request import urlopen

def getPage(url):
    response = urlopen(url)
    return response.read().decode('utf-8')

def parsePage(s):
    com = re.compile(
        '<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?<span class="title">(?P<title>.*?)</span>'
        '.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>', re.S)

    ret = com.finditer(s)
    for i in ret:
        yield {
            "id": i.group("id"),
            "title": i.group("title"),
            "rating_num": i.group("rating_num"),
            "comment_num": i.group("comment_num"),
        }

def main(num):
    url = 'https://movie.douban.com/top250?start=%s&filter=' % num
    response_html = getPage(url)
    ret = parsePage(response_html)
    print(ret)
    f = open("move_info7", "a", encoding="utf8")
    for obj in ret:
        print(obj)
        data = str(obj)
        f.write(data + "\n")
    f.close()

if __name__ == '__main__':
    count = 0
    for i in range(10):
        main(count)
        count += 25

 

2.网络编程

B/S即:Browser与Server,中文意思:浏览器端与服务器端架构,这种架构是从用户层面来划分的。

B/S 有什么好?统一了所有应用的入口

手机端 为什么B/S没火起来:统一了所有应用的入口 —— 微信

 

"端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。

C/S 架构 几乎包含了所有网络开发的架构形态

 B/S 架构 也是C/S架构
 B/S 架构中的client都是browser浏览器
 统一了所有应用的入口 —— 趋势

 

# 网络
# 底层的

# 网卡 mac地址 :地址永远不会变,且每块卡都拥有一个唯一的Mac
# 局域网
# 交换机 : 同一个局域网内的机器之间的交流
# 路由器 : 跨局域网机器之间的交流
# 网关ip : 跨局域网的机器之间不能直接通信,只能通过网关ip通信
# 为什么有局域网:


# 8位 2进制
# asc码 只有 255 个
# 00000001 --> 1
# ip地址代表了你在一个网络中的位置
# 是一个四位点分十进制
# 范围是 0.0.0.0 - 255.255.255.255
  # 11111111.1111111.1111111.1111111
# mac地址唯一的,为什么要有ip地址?
# 192.168.11.***
  # 256台 0-255
# 192.168.***.***
  # 256^2
# 192.***.***.***
  # 256^3

 

# 子网掩码
  # 网络地址ip和子网掩码ip做按位与运算 如果结果相同 那么说明在同一个网段内
#192.168.12.62
#11000000.10101000.00001011.00111110
#11111111.11111111.11111111.00000000
#11000000.10101000.00001011.00000000 == 192.168.0.0
#255.255.0.0

#192.168.11.94
#255.255.0.0
# 11000000.10101000.00001011.01011110
# 11111111.11111111.11111111.00000000 == 192.168.0.0

posted on 2018-05-02 15:44  麦兜家的狗🐶  阅读(50)  评论(0)    收藏  举报

导航