python语法中的网络编程_(六)python语法之网络编程
1.TCP
#1 服务端 server.py
import socket
host = '127.0.0.1' # 设置ip
port = 9000 # 设置端口
# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port)) # 绑定ip和端口
s.listen(5) # 等待客户端连接
print("开始监听...")
while True:
c, addr = s.accept() # 建立客户端连接
print('客户端地址:', addr)
data = c.recv(2048)
print("消息:", data.decode('utf-8'))
c.send(b'Welcome to connect!')
c.close() # 关闭连接
#2 客户端 client.py
import socket
host = '127.0.0.1'
port = 9000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send(b'Hello')
data, addr = s.recvfrom(1024)
print(data.decode('utf-8'))
s.close()
2.UDP
#1 server.py
import socket
host = '127.0.0.1' # 设置ip
port = 9000 # 设置端口
# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((host, port))
while True:
data, addr = s.recvfrom(1024)
print('server收到来自 {} 的消息:'.format(addr), data)
s.sendto(data.upper(), addr)
s.close()
#2 client.py
import socket
host = '127.0.0.1' # 设置ip
port = 9000 # 设置端口
c = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
c.sendto(b'hello', (host, port))
data, addr = c.recvfrom(1024)
print('客户端收到来自 {} 的消息:'.format(addr), data)
c.close()
3.requests
import requests
#1 返回值
r = requests.get('https://www.baidu.com')
r.status_code # 状态码
r.text # HTML源码
r.content # 网页二进制内容
r.json # json文件
r.headers # 返回的headers
r.request.headers # 请求的headers
r.cookies # 获取cookies
r.encoding # 从header中猜测的编码
r.apparent_encoding # 从内容分析的编码
r.raise_for_status() # 状态码不是200触发异常
#2 get请求
headers = {'User-Agent': 'Mozilla/5.0'}
payload = {'key': 'value'}
cookies = dict(mycookies='mycookies')
requests.get(url, headers=headers, params=payload, cookies=cookies, timeout=5)
#3 post请求
payload = {'key': 'value'}
requests.post(url, data=payload)
requests.post(url, data=json.dumps(payload))
files = {'file': open('test.txt', 'rb')}
requests.post(url, files=files) # 上传文件
#4 proxies代理
proxies = {'https': 'http://x.x.x.x:8000'}
requests.post(url, proxies=proxies)
4.selenium
# pip install selenium
# 下载ChromeDriver,放置在代码同目录下即可
#1 基本使用
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
browser = webdriver.Chrome()
browser.get("https://www.baidu.com")
print(browser.current_url)
print(browser.get_cookies())
print(browser.page_source) # 获取HTML源码
# 通过id获取元素
element = browser.find_element_by_id("kw")
print(element.id) # 获取ID
print(element.text) # 获取文本
print(element.location) # 获取位置
print(element.tag_name) # 获取标签名
print(element.size) # 获取大小
print(element.get_attribute('class')) # 获取属性
# 向元素输入内容
element.send_keys("Python")
element.send_keys(Keys.ENTER) # 模拟回车键
element.clear() # 清除内容
# 通过Xpath获取元素
element = browser.find_element(By.XPATH, '//*[@id="su"]')
element.click() # 模拟点击
#2 wait等待
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
SERVICE_ARGS = ['--load-images=false', '--disk-cache=true']
browser = webdriver.PhantomJS(service_args=SERVICE_ARGS)
browser.set_window_size(1400, 900)
# 实现页面等待的对象
wait = WebDriverWait(browser, 10)
def search(url):
try:
browser.get(url)
# 等待指定的元素加载
element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#kw")))
except TimeoutException:
search(url)
search('https://www.baidu.com')
5.BeautifulSoup
from bs4 import BeautifulSoup
import re
html_doc = '''
百度一下,你就知道
新闻
hao123
地图
视频
贴吧
'''
#1 创建BeautifulSoup对象
soup = BeautifulSoup(html_doc, 'html.parser')
# 获取格式化html内容
print(soup.prettify())
#2 获取第一个匹配标签a的内容
print(soup.a)
# 新闻
# 返回标签a属性class的值
print(soup.a['class'])
# ['mnav']
# 返回标签a属性的字典
print(soup.a.attrs)
# {'class': ['mnav'], 'href': 'http://news.baidu.com', 'id': 'news'}
# 返回标签a的内容
print(soup.a.string)
# 新闻
#3 CSS选择器,返回列表
print(soup.select('#map'))
# [地图]
print(soup.select('div a[id="map"]'))
# [地图]
#4 find_all()搜索
print(soup.find_all('a', id='video'))
# [视频]
print(soup.find_all(re.compile("^a")))
# [新闻, hao123, 地图, 视频, 贴吧]
# find_all()搜索文档中的字符串
print(soup.find_all(text=re.compile("^贴")))
# ['贴吧']
# find_all()传自定义方法搜索
def func(tag):
return tag.has_attr('class') and not tag.has_attr('id')
print(soup.find_all(func))
# [hao123]
6.PyQuery
from pyquery import PyQuery as pq
from lxml import etree
html_doc = '''
百度一下,你就知道
新闻
hao123
地图
视频
贴吧
'''
#1 初始化
doc = pq(etree.fromstring(html_doc))
#2 CSS选择器
item = doc('#news')
print(item.attr('href'))
# http://news.baidu.com
print(item.text())
# 新闻
#3 链式使用
items = doc('#u1').find('a').items()
for item in items:
print(item.text())
# 新闻 hao123 地图 视频 贴吧
python语法中的网络编程_(六)python语法之网络编程相关推荐
- python线程中再起线程_多线程 - Python中的线程化
关于Kamaelia,上面的答案并没有真正涵盖这里的好处. Kamaelia的方法提供了一个统一的界面,这个界面非常实用,用于处理线程,生成器和处理器. 单个系统中的进程用于并发. 从根本上说,它提供 ...
- python函数中self的作用_在Python中self的用途是什么?
如果您使用的是Python,那么"自我"一词是无法逃避的.它用于方法定义和变量初始化中.每次定义方法时,都会显式使用self方法.在本文中,我们将按以下顺序深入了解Python的自 ...
- python控制语句中的条件语句_『Python』条件控制语句
Loading... ## 1. 条件语句 ``` Python条件语句是通过一条或者多条语句的执行结果(True或False)来决定执行的代码块. ``` ``` 在Python中, 指定任何非0和 ...
- 下列python保留字中、用于异常处理_下列Python保留字中,用于异常处理结构中用来捕获特定类型异常的是...
下列Python保留字中,用于异常处理结构中用来捕获特定类型异常的是 答:except 在罗马共和国后期,西班牙地区被凯撒征服并占领了.() 答:× 维拉帕米不用于治疗 答:慢性心功能不全 按照交通环 ...
- python文件中单词的删除_使用python删除文件中的多余单词
嗨,我正在学习Python,出于好奇,我编写了一个程序来删除文件中多余的单词. 我正在比较文件text1.txt中的测试.和'text2.txt',基于text1中的测试,我删除了test2中多余的单 ...
- python教程400集笔记,Python学习中的笔记--集合相关,python笔记--集合
Python学习中的笔记--集合相关,python笔记--集合 集合的基本操作 一.可修改的集合set 创建集合 var = set() var = {'a','b','c','d'} 成员检测 va ...
- python中的递归思想_〖Python〗-- 递归、面向对象初识及编程思想
[递归.面向对象初识及编程思想] 一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递归策 ...
- python爬取百度贴吧中的所有邮箱_使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号...
原标题:使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号 不知道大家过年都是怎么过的,反正栏主是在家睡了一天,醒来的时候登QQ发现有人找我要一份贴吧爬虫的源代码,想起之前练手的时候写过一个抓 ...
- python 网页编程_通过Python编程检索网页
python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...
最新文章
- C++关键字volatile
- MPB:浙大王佳堃组瘤胃微生物移植(视频)
- Markdown编辑器“MarkdownPad”下载安装(图)
- LNMP架构环境搭建之PHP、Nginx源码编译安装及其简单配置应用
- 安装Orcale 10g SP3时报oui.exe异常错误
- python中long类型的取值范围_java基本数据类型取值范围
- Addin and Automation Development In VB.NET 2003 (3)
- java中产生死锁的原因及如何避免
- 地摊叫卖、超市播音工具-简洁的文字转语音播音软件
- Himly TCC Dubbo 程序示例
- 推荐系统组队学习——协同过滤
- python读取文本数据--完善中
- 拓客系统专用服务器,北京拓客系统
- mt4双线macd_指标小课堂|学院首创!独家手机MT4双线MACD指标设置教程
- bootdo框架切换tab标签时自动刷新,无需手动刷新
- 手把手教你制作gif动图,一分钟轻松学会
- Cocos Creator下JavaScript模拟砸金蛋3d旋转效果,附代码
- 专访京东科技张亮:本土开源需形成吸纳开发者的靶心
- 华为数字化转型与数据管理实践介绍 附下载
- jstack 命令使用经验总结和线程性能诊断脚本
热门文章
- ecshop 支持 php,ecshop支持PHP7的修改方法
- 简单java登录页面android_Android 之路 - RxJava2+Retrofit实现简单登陆
- 佳能9100cdn故障_佳能 打印机故障代码大全
- python寻找完全平方数_少儿编程|Python小课堂 – 寻找aabb完全平方数
- windowslinux服务器性能对比,Windows/Linux服务器的选择与对比
- 第 0001 天:聊聊成长型思维模式者
- 如果不当程序员,我可以生活的更好么?
- 10分钟学会数据库压力测试
- 360网神防火系统 配置端口映射_IIS配置证书端口443无法访问
- Iso时间转java instant,Java /将ISO-8601(2010-12-16T13:33:50.513852Z)转换为