视频地址:https://www.bilibili.com/video/BV1i54y1h75W
【0】说明与安装pyhon,自行安装即可,记得在安装界面选上pip与path
pip用于安装pyhon第三方库,path用于简便使用命令行调用python程序
【1】python基础
101-熟悉基本输入
input(),output()
因为我有c/c++基础,所以基本使用可以很快掠过
【2】基本网络操作
201-知道urllib获取百度首页
202-requests操作百度翻译sug获得json(重要)
pip install requests
203-搜狗查询周杰伦,学会设置ua
【3】正则表达式
在线正则测试网站
https://tool.oschina.net/regex
重要知识点:.除了换行符的所有字符
[0123a-z]其中的任意一个字符
*任意多个
{n,m}最少n个,最多m个,都可以省略
.*?惰性匹配
import re:导入re(正则)模块
list = re.findall,返回list,一般不使用
it = re.finditer,返回迭代器,可以用group()获取具体成员
re2 = re.compile(r"\d+"),预加载正则,以后的参数只需要字符串
data = re2.finditer("我的电话是213421,qq是3243");
r"<span.*?>(?P<name>.*?)</span>",re.S
(?P<分组名字>正则),print(it.group("name"))从正则中提取需要的字符串
re.S,让.可以匹配任意字符(包括换行符)
双引号含双引号:r"正则\"表达\"式",需要转义
单引号含双引号:r'正则"表达"式',不需要转义
【20211116】日【110609】秒
先到这里,以后再添加,如有错误,请指出,也欢迎一起讨论~
# 访问百度 # 导入url库 from urllib.request import urlopen url = "http://www.baidu.com" resp = urlopen(url) # 打印信息到控制台 #print(resp.read()) # 也可以保存到文件 with open("baidu.html",mode = "w") as f: f.write(resp.read().decode("utf-8")) # 获取用户输入,阻塞界面消失 input("按回车键结束")
1 # 查百度翻译sug 2 3 # 导入requests,需要先使用pip安装 4 5 import requests 6 7 8 9 # sug就是suggestion 10 11 # sug数据结构比较简单,所以用来学习post 12 13 url = 'https://fanyi.baidu.com/sug' 14 15 # 查询用户输入的单词,并载入字典 16 17 s = input("请输入你要查询的英文单词") 18 19 dic = { 20 21 "kw":s 22 23 } 24 25 26 27 resp = requests.post(url, data = dic) 28 29 # resp.json() 30 31 # 直接处理成json格式 32 33 print(resp.json()) 34 35 resp.close() 36 37 ### 最后面应该resp.close() 38 39 ## 如果不关闭,可能被封ip!!! 40 41
# 搜狗搜索周杰伦 import requests # 加入一个字典,字典中的这个元素叫做ua,如果没有ua,那么会被反爬,导致你拿不到数据 dic = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.30"} # 需要爬的网址,就是用搜狗搜索“周杰伦” url = 'http://www.sogou.com/web?query=周杰伦' # 进行get请求时带上ua, resp = requests.get(url, headers = dic) print(resp) print(resp.text) resp.close()
# 学习re表达式 import re # list返回列表,效率不高,不建议使用 #list = re.findall(r"\d+","我的电话是123213213,qq是2343522345325") #print (list) # 返回迭代器,效率高,推荐使用 #it = re.finditer(r"\d+","我的电话是123213213,qq是2343522345325") #for i in it: # print (i.group()) #(?P<group_name>.*?) re模块中通过组名获取指定数据的用法 s = """ <div class='glq'><span id='1'>郭麒麟</span></div> <div class='zjl'><span id='2'>周杰伦</span></div> <div class='zxz'><span id='3'>张信哲</span></div> <div class='jt'><span id='4'>景天</span></div> """ re2 = re.compile(r"<span.*?>(?P<name>.*?)</span>") result= re2.finditer(s) for i in result: print(i.group("name"))