Coursera/py4inf/access network data 笔记 密歇根大学


https://www.coursera.org/learn/python-network-data

RE
常用到的一些表达式
.  任意字符
*  0次或多次(greedy)
+  1次或多次(greedy)
?  0次和1次(non-greedy)   和*,+一起用的时候
\s whitespace
\S non-whitespace
[^XYZ] 不包含XYZ
[aeiou] 包含
[a-z0-9] range
() 匹配以后真正return的内容

*?,+?是non-greedy,也就是取最短,而不是greedy下的取最长


re.search(reex,line) 返回true/false
re.findAll(reex,line) 返回一个list,里面所有line里面和reex匹配的

---------------------------------------------------

获取网络上的数据,要通过socket.python有自带的库socket library (Transport Layer)

    import socket
    mysocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#prepare a porthole but not connect to anything
    myscoket.connect(host,port)#make a connection

可以比较一下本地open文件和远程socket的同异


先新建socket,然后和服务器连接。
接着发出GET请求
服务器接收到请求以后解析,获取对应文件,response给client
浏览器展示
关闭socket

    import socket
    mysocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    mysocket.connect(('www.py4inf.com',80))
    mysocket.send('GET http://www.py4inf.com/code/romeo.txt HTTP/1.0\n\n')

    while True:
        data=mysocket.recv(512)
        if(len(data)<1):
            break
        print data

    mysocket.close()

利用socket来实现网络数据的获取是比较底层的做法,可以封装过的urllib    (Application Layer)
    import urllib
    fhand = urllib.urlopen('http://www.py4inf.com/code/romeo.txt')

    for line in fhand:
        print line.strip()

利用BeautifulSoup 来parse HTML
import urllib
from BeautifulSoup import *

url = raw_input('Enter your website:')
fhand = urllib.urlopen(url)
html = fhand.read()
soup = BeautifulSoup(html)

tags=soup('a') #tags is a list
# Each tag is like a dictionary of HTML attributes
for tag in tags: # tag is a BeautifulSoup.Tag object
    print tag.get('href',None)


--------------------------------------

Wire protocol/wire format
通过Net进行数据传输之间的交换协议,比如python dict这根线传来的是什么数据格式,到哪头的Java Hashmap又需要什么格式

serialize 和de-serialize的过程


这里面有两种常用的格式:XML和Json
XML更适合document类型的nest things,json就适合JS的list,array,object 以及python的dict

XML是有一系列的tags组成的,类似于HTML。但是XML的属性都是自己定义的,不需要要满足HTML的定义,只要有意义即可。
XML的validation一般只有在出现问题的时候使用:xs:complexType,xs:sequence,xs:element ,xs:type,name
XML在python里面的解析主要是两个关键:
1.import xml.etree.ElementTree as ET
2. tree = ET.fromstring(xmlString) #tree是一个xml.etree.ElementTree.Element
    tree.find().text    tree.find().get()
-----------------------------
JSON 支持list和object
1.import json
2.info = json.loads(data) #出来的是一个dict/list


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值