廖雪峰python教程 文档学习教程可参考
python菜鸟教程 需要用时,可检索查找
python 原版教程 - 英文 英文好可直接看原版教程
莫烦python
或者哔哩哔哩搜索 莫烦python 、小甲鱼
无需基础,编程语言基本结构。python C++ 等等
1、语法基础:变量命名、运算、数据结构
2、逻辑结构:循环(for while)、判断(if)
3、特性、: 类(Class)
参考资料
编译器:pycharm python
廖雪峰的python教程
python for everybody
莫烦python
Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
等号(=)用来给变量赋值。
counter = 500 # 整型变量
miles = 500.0 # 浮点型变量
name = "500" # 字符串
print(name) # 输出变量
type(name) # 查看变量类型
#
your_name = input("What is your name: ") # 输入,字符串形式
print(your_name)
缩进:严格的缩进要求,一一对应
python3 的六个标准数据类型中:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
基本数据类型
注释: 使用 # 或者 ”“” “”“
python中的运算符
def decide(x):
if x>2:
print (var1)
elif x<0:
x = x-2
print ("x")
else:
x = x + 2
print (x)
var1 = 1
var2 = 0
if var1:
print ("1 - if 表达式条件为 true")
print (var1)
elif var2:
print ("2 - if 表达式条件为 true")
print (var2)
else:
print(var1,var2)
print ("Good bye!")
import calendar
"""生成日历,读写文件"""
# yy = int(input("输入年份:"))
# mm = int(input("输入月份:"))
# print(calendar.month(yy, mm))
with open("test.txt", 'wt') as f:
f.write("写入了一个文本")
f.writelines(calendar.month(2000,2))
with open("test.txt", 'rt') as f:
test = f.read()
print(test)
re 模块使 Python 语言拥有全部的正则表达式功能
正则表达式
CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户端HTML页面的接口。
socket.socket([family[, type[, proto]]])
family: 套接字家族可以使AF_UNIX或者AF_INET
type: 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAM或SOCK_DGRAM
protocol: 一般不填默认为0
简单思路:登陆-写邮件-发送
相关模块: smtplib:简单邮件传输协议,在发送邮件过程中起到服务器之间通信
email:服务器之间通信的信息,信息头、信息主题,写邮件,添加附件模块
首先打开邮箱的SMTP功能,登陆,脚本设置分为三个步骤:
1.服务器端信息,邮件主题信息,登陆发送
爬虫小技巧
socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据
Socket–网络相关信息
主要用途:网络通信,1、本地通信; 2、网络间进程通信:标识主机,标识进程,利用(IP地址、协议、端口)三元组标识网络进程
SOCK_STREAM:表示面向连接的数据传输方式,无损,确保数据的正确性,如HTTP协议
SOCK_DGRAM:表示无连接的数据传输方式,如QQ 视频聊天和语音聊天
TCP/IP协议 传输控制协议和网际协议:提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。 三次握手建立连接 四次挥手断开连接
实例:客户端-服务端通信
_thread 提供了低级别的、原始的线程以及一个简单的锁,它相比于 threading 模块的功能还是比较有限的。
threading 模块除了包含 _thread 模块中的所有方法外,还提供的其他方法:
threading.currentThread(): 返回当前的线程变量。
threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。
除了使用方法外,线程模块同样提供了Thread类来处理线程,Thread类提供了以下方法:
run(): 用以表示线程活动的方法。
start():启动线程活动。
join([time]): 等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。
isAlive(): 返回线程是否活动的。
getName(): 返回线程名。
setName(): 设置线程名
多线程爬取天气
def get_weather(city):
req = requests.get('http://wthrcdn.etouch.cn/weather_mini?city=%s' % city)
dic_city = req.json() # 转换为字典
city_data = dic_city.get('data')
# print(city_data)
if city_data:
city_forecast = city_data['forecast'][0]
print(
city_data.get('city'),
city_forecast.get('date'),
city_forecast.get('high'),
city_forecast.get('low'),
city_forecast.get('type'),
' '
)
else:
print('未获得')
threads = []
files = range(len(cities))
for i in files:
t = threading.Thread(target = get_weather, args=(cities[i],))
threads.append(t)
for i in files:
threads[i].start()
for i in files:
threads[i].join() #多线程进行
print('\n查询结束')
爬虫基础
有的网页会禁止非浏览器访问,这时用到headers
1.了解服务器与本地得交换机制
Request: HTTP.1.1 使用get post 方法,主要使用get方法,request可以显示更多的状态等
Response: 网页返回的信息,status_code==200 表示成功
2.用BeautifulSoup处理获取的数据
Select方法
BeautifulSoup 教程
参考项目:疫情地图
爬虫实例教程
1、了解robots协议,robots:网络爬虫排除标准
如何查看网站的robots协议:在网站后添加/robots.txt,如https://www.baidu.com/robots.txt
base_url = "https://baike.baidu.com"
his = ["/item/%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB/5162711"] # 百度百科的爬虫
# his = ["/item/网络爬虫/5162711?fr=aladdin"]
url = base_url + his[-1]
html = urlopen(url).read().decode('utf-8')
soup = BeautifulSoup(html, features='html.parser')
print(soup.find('h1').get_text(), ' url: ', his[-1])
# find valid urls
sub_urls = soup.find_all("a", {
"target": "_blank", "href": re.compile("/item/(%.{2})+$")})