文章目录
python 爬虫
1. if name == ‘main’
表示在源代码中会直接运行main()函数,而作为模块被导入时,不会自动运行
2. 异常
(1) except
- try:xxx except:xx(捕获所有异常)
- except vule:xx(vule具体异常信息)
3. 正则表达式
(1) 常用语法
- ( \d*)(得到多个数字)
- (.*?)(得到多个字符)
- \s(匹配空白)
- \S(匹配非空白)
注意: 加上()表示 会得到 匹配的字符,不加() 不会得 到匹配的字符
(2) re.S(大写)
- compile(正则,re.S)返回一个对象,
- re.findall(compile,aim,re.S)返回一个列表,当compile()中使用了re.S参数时可以在findall中省去。
注意: 有re.s参数,则表明在全局中进行匹配,如果不加re.s则表明只在每一行中进行匹配。
(3) json.(dumps/dump/loads)
- json.dumps( ,ensure_ascil=false)将dict格式转换为str格式,默认情况下为ascil编码,因此中文设置其false。
- json.dimp(value,fp)和文件操作with open(“filename”,“ab”,encoding=“utf-8”) as fp一起使用,先讲dict转换为str格式,然后存入文件中。
- json.loads()将str格式转化为dict格式。
4. 多线程
(1) pool
- map(fuc,[i for i in range(10)])
- apply_async(fuc, (i, ))
5. requests模块
步骤:
- 定义url
- 获取求情数据( requests.get(url,headers) )
注意: 如果获取到的为音频,则需要转换为二进制文件进行读写( data.content )
6. urllib模块
(1) urlencode(data)
例子:
data={
"age":18,
"name":"崔颢"
}
url="http://www.baidu.com?"+urlencode(data)
代码分析:
urlencode()将键值对(keys:value)转化为url请求的参数
(2) urlecode(data)
该函数可以讲对字符串进行解析
7. selenium模块
描述: selenium模块就像是一个机器人,可以模拟人在浏览器的行为,但是缺点便是速度太慢,但可以抓取到动态网页。
注意: 在使用selenium模块时,需要安装浏览器对应版本的chromedriver软件,可以将软件放在python/scripts目录下,也可以配置环境变量。
代码实例:
#导入模块
from selenium import webdriver
from selenium.webdriver.chrome.option import Option
webd=Option()
webd.add_argent("--headless")
drive=webdriver.Chrome(chrome_options=webd)
drive.get(url)
data=drive.page_source#得到数据
代码分析:
- 导入模块
- 创建Options对象,并添加属性
- 创建webdriver.Chrome对象
- 发送请求
- 得到数据
8.文件
(1) 文件操作模式
- 文件操作模式参考php(总结)