python网络编程爬虫_Python爬虫--网络编程
Python 网络编程
Python提供两个基本的Socket模块:
Socket,提供了标准的BSD Sockets API
SocketServer, 提供了服务器中心类,可以简化网络服务器的开发
1、Socket类型
套接字格式为: socket(family, type[,protocall]),使用给定的地址族、套接字类型、协议类型(默认为0)创建套接字。
2、Socket函数
TCP编程
服务端
创建Socket,绑定Socket到本地IP和端口
开始监听连接
进入循环,不断接收客户端的连接请求
接收传来的数据,并发送给对方数据、
传输完毕后,关闭Socket
# coding=utf8
"""
1. 创建Socket,绑定Socket到本地IP和端口
2. 开始监听连接
3. 进入循环,不断接收客户端的连接请求
4. 接收传来的数据,并发送给对方数据
5. 传输完毕后,关闭Socket
"""
import socket
import threading
import time
def dealClient(sock, addr):
# 4. 接收传来的数据,并发送给对方数据
print 'Accept new connection from %s:%s...' % addr
sock.send(b'Hello, I am server!')
while True:
data = sock.recv(1024)
time.sleep(1)
if not data or data.decode('utf-8') == 'exit':
break
print '-->>%s!' % data.decode('utf-8')
sock.send('Loop_Msg: %s!' % data.decode('utf-8').encode('utf-8'))
# 5. 传输完毕后,关闭Socket
sock.close()
print 'Connection from %s:%s closed.' % addr
if __name__ == '__main__':
# 1. 创建Socket,绑定Socket到本地IP和端口
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1',9999))
# 2. 开始监听连接
s.listen(5) # listen(n)传入的值, n表示的是服务器拒绝(超过限制数量的)连接之前,操作系统可以挂起的最大连接数量。n也可以看作是"排队的数量"
print 'Waiting for connection...'
# 3. 进入循环,不断接收客户端的连接请求
while True:
sock, addr = s.accept()
t = threading.Thread(target=dealClient, args=(sock, addr))
t.start()
客户端
创建Socket,连接远端地址
连接后发送数据和接收数据
传输完毕后,关闭Socket
# coding=utf8
"""
1. 创建Socket,连接远端地址
2. 连接后发送数据和接收数据
3. 传输完毕后,关闭Socket
"""
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 9999))
print '-->>'+s.recv(1024).decode('utf-8')
s.send(b'Hello I am a client')
print '-->>'+s.recv(1024).decode('utf-8')
s.send(b'exit')
s.close()
UDP 编程
服务端
创建Socket,绑定指定的IP和端口
直接发送数据和接收数据
关闭Socket
# coding=utf8
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('127.0.0.1',9999))
print 'Bind UDP on 9999...'
while True:
data, addr = s.recvfrom(1024)
print 'Received from %s:%s' % addr
s.sendto(b'Hello, %s!' % data, addr)
客户端
与TCP不同,UDP客户端不需要建立连接,创建Socket后可以直接后服务端进行数据交换
# coding=utf8
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
for data in [b'Hello',b'World']:
s.sendto(data,('127.0.0.1',9999))
print s.recv(1024).decode('utf-8')
s.close()
python网络编程爬虫_Python爬虫--网络编程相关推荐
- python网络编程实战_Python 异步网络编程实战
近年来 Python 的发展的非常迅速,"简单"."高效"是 Python 吸引人的一大特色.在国内 Python 开发需求越来越大,Python 具有丰富强大 ...
- hadoop 爬虫_python爬虫知识点梳理:带你全面入门python爬虫
今天主要跟大家谈谈爬虫,尤其是刚入门的伙伴,少走弯路!文末附全套的视频版Python学习教程,含爬虫教程!希望大家能够把文字部分看完!做一个梳理! 在学习爬虫之前我们需要明白的一个问题: 爬虫能做什么 ...
- python b站 排行_Python爬虫抓取B站小视频排行榜,新手也可以跟着做哦!
Python爬虫学到什么程度就可以去找工作了? 有朋友在群里和大家讨论,问的最多的问题就是,python 爬虫学到什么程度可以去找工作了,关于这点,和大家分享下我的理解. 看大牛用Python实现发送 ...
- python读取手机文件_python 读取 网络 文件
Python之pandas数据加载.存储 Python之pandas数据加载.存储 0. 输入与输出大致可分为三类: 0.1 读取文本文件和其他更好效的磁盘存储格式 2.2 使用数据库中的数据 0.3 ...
- python并发编程方法_Python Futures并发编程详解
无论哪门编程语言,并发编程都是一项很常用很重要的技巧.例如,爬虫就被广泛应用在工业界的各个领域,我们每天在各个网站.各个 App 上获取的新闻信息,很大一部分便是通过并发编程版的爬虫获得. 正确合理地 ...
- python窗口显示表格_Python爬虫之GUI图表
关于Python爬虫系列的这篇文章我很早就想写了,但由于我前两周一直在研究vscode插件开发方面,就没去写文章.所幸目前vscode插件开发的知识了解的差不多了,是时候写了,哈哈.需要说明的是,我并 ...
- python从入门到爬虫_python爬虫从入门到放弃(一)之初识爬虫
什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引. ...
- python获取网站代码_python爬虫1——获取网站源代码(豆瓣图书top250信息)
# -*- coding: utf-8 -*- import requests import re import sys reload(sys) sys.setdefaultencoding('utf ...
- python在线爬虫_Python爬虫偷懒神器!快速一键生成Python爬虫请求头
今天介绍个神奇的网站!堪称爬虫偷懒的神器! 我们在写爬虫,构建网络请求的时候,不可避免地要添加请求头( headers ),以 mdn 学习区为例,我们的请求头是这样的: 一般来说,我们只要添加 us ...
- python如何解析网页_Python爬虫入门第一课:如何解析网页
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于肥宅与画家 ,作者AntzUhl 我们编写网络爬虫最主要的目 ...
最新文章
- 红帽系列linux自行配置本地yum源
- centos7 mysql安装配置_mysql 5.7.17 安装配置方法图文教程(CentOS7)
- python拷贝文件函数_Python Set集合,函数,深入拷贝,浅入拷贝,文件处理
- 前端打印第三方插件_vscode mock服务插件amock教程
- web服务器文档根目录在哪里,web服务器根目录在哪
- matlab aviobj,MATLAB AVI 视频读取处理
- 领域驱动设计(DDD)前夜:面向对象思想
- Linux运行8086代码,* linux下编译,链接,运行,汇编程序
- JAVA导出404_从ActiveReports 8导出Excel时出错404
- java导入excel数据到mysql_java的poi技术读取Excel数据到MySQL
- (进阶)LeetCode(206)——反转链表(JavaScript)
- 电力企业计量生产需求系统解决方案
- Recompile/upgrade nginx binary with no down-time
- 【排序算法】堆排序——常规方法
- 【人脸识别】基于matlab GUI PCA人脸二维码识别(带面板)【含Matlab源码 754期】
- java打印出日历_java控制台打印本月的日历
- fanuc系统md和mf区别_fanuc mf系统小技巧汇总
- Newton tangent method
- vue报错Navigating to current location (/login) is not allowed
- python与spider的区别_python – Scraw spider与Scraped items之间的区别
热门文章
- go uintptr unsafe Pointer offset() 的使用
- 想成为BAT中的一员,你总要去学点什么(一)
- Spark _19 _Spark内存管理
- java基础----IO序列化Serializable
- leetcode 572. 另一个树的子树(Java版)
- leetcode 101. 对称二叉树 递归解法
- dart系列之:dart语言中的内置类型
- 快乐学算法之:字典树Trie
- Spring Boot 之Spring data JPA简介
- 遇到的坑_新手搭建web自动化遇到的坑...