一、实验目的
- 熟练掌握基于Socket编程的流程。
- 熟练掌握网页爬虫的操作步骤
二、实验题目
- 爬取一个网页的内容,以文件的形式保存到本地磁盘。
>>> url="http://www.bxait.cn/xxgk/xxjj/"
>>> with urllib.request.urlopen(url) as f:
print(f.read().decode())
>>> url="http://www.bxait.cn/xxgk/xxjj/"
>>> f=open('xxjj.html','wb')
>>> with urllib.request.urlopen(url) as fp:
f.write(fp.read())
>>> f.close()
#使用GET方法提交参数并访问页面
>>> import urllib.request
>>> import urllib.parse
>>> params=urllib.parse.urlencode({'key':'python','act':'input'})
>>> url = "http://search.dangdang.com/?%s" % params
>>> with urllib.request.urlopen(url) as f:
print(f.read().decode('gbk'))
2.设计一个基于Scoket编程的程序,完成两台电脑之间数据的交流。
服务端代码:
import socket
words = {'how are you?':'Fine,thank you.','how old are you?':'20','what is your name?':'Houyao','where do you work?':'XIAN','bye':'Bye'}
HOST=''
PORT=50007
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((HOST,PORT))
s.listen(1)
print('Listening at port:',PORT)
conn,addr=s.accept()
print('Connected by',addr)
while True:
data=conn.recv(1024).decode()
if not data:
break
print('Received message:',data)
conn.sendall(words.get(data,'Nothing').encode())
conn.close()
s.close()
客户端代码:
import socket
import sys
#客户端
# 服务端主机IP地址和端口号
HOST = '127.0.0.1'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
# 连接服务器
s.connect((HOST, PORT))
except Exception as e:
print('Server not found or not open')
sys.exit()
while True:
c = input('Input the content you want to send:')
# 发送数据
s.sendall(c.encode())
# 从服务端接收数据
data = s.recv(1024).decode()
print('Received:', data)
if c.lower() == 'bye':
break
# 关闭连接
s.close()