Python自学记录-

1.自定义抛异常、try catch异常
def test(num):
    if num!=1:
        raise Exception('This is the error message')

try:
    test(2)
except Exception as error:
    print('An exception happened: ' +str(error))

2.logging.debug打印日志(开启)。logging.CRITICAL 禁止日志。
import logging

logging.basicConfig(level=logging.DEBUG,format='%(asctime)s - %(levelname)s - %(message)s') #level=logging.DEBUG 开启日志
#logging.basicConfig(level=logging.CRITICAL,format='%(asctime)s - %(levelname)s - %(message)s') #level=logging.CRITICAL 禁止日志
logging.debug('Start of program')  #打印日志时使用logging.debug函数

logging.debug('End of program')

3.日志的5个级别
import logging

logging.basicConfig(level=logging.DEBUG, format=' %(asctime)s -%(levelname)s - %(message)s')#level=logging.DEBUG,
#传DEBUG显示所有级别日志,传ERROR则显示error和critical的日志。总的来讲,传日志级别,就显示该级别及更高级别的日志
#日志含5个级别,每个级别是用户自己定义的

logging.debug('Some debugging details.') #最低级别,用于记录小细节,诊断问题时使用
logging.info('The logging module is working.') #一般事件日志或确认一切工作正常
logging.warning('An error message is about to be logged.') #用于可能得问题,它不会阻止程序的工作,但将来可能会
logging.error('An error has occurred.') #用于记录错误,它导致程序做某事失败
logging.critical('The program is unable to recover!') #最高级别,用于表示致命错误,它导致或将要导致程序完全停止


4.logging.disable(日志级别)禁用此行后的所有此级别和比此级别低的日志
import logging

logging.basicConfig(level=logging.DEBUG, format=' %(asctime)s -%(levelname)s - %(message)s')#level=logging.DEBUG,

logging.error('An error has occurred.')#用于记录错误,它导致程序做某事失败
logging.disable(logging.CRITICAL) #使用logging.disable(日志级别)可以禁用此行后的所有此级别和比此级别低的日志
logging.critical('The program is unable to recover!')#最高级别,用于表示致命错误,它导致或将要导致程序完全停止

5.记录日志到文件,避免太多日志打印到控制台。
import logging

logging.basicConfig(filename='myProgramLog.txt', level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')

logging.error('An error has occurred.')#用于记录错误,它导致程序做某事失败

6.open函数可以打开网页

import webbrowser
webbrowser.open('www.baidu.com')

7.下载网页内容
import requests

res=requests.get('https://www.baidu.com/s?wd=%E6%96%B0%E4%B8%80%E8%82%A1%E5%BC%BA%E5%86%B7%E7%A9%BA%E6%B0%94%E6%9D%A5%E8%A2%AD%E5%B1%80%E5%9C%B0%E9%99%8D%E6%B8%A9%E8%B6%8510%E2%84%83&sa=fyb_n_homepage&rsv_dl=fyb_n_homepage&from=super&cl=3&tn=baidutop10&fr=top1000&rsv_idx=2&hisfilter=1')
print(type(res))
print(res.status_code==requests.codes.ok)
print(len(res.text))
print(res.text[:250])

8.检查下载网页内容是否成功
import requests

res=requests.get('https://www.baidu.com/s?wd=%E6%96%B0%E4%B8%80%E8%82%A1%E5%BC%BA%E5%86%B7%E7%A9%BA%E6%B0%94%E6%9D%A5%E8%A2%AD%E5%B1%80%E5%9C%B0%E9%99%8D%E6%B8%A9%E8%B6%8510%E2%84%83&sa=fyb_n_homepage&rsv_dl=fyb_n_homepage&from=super&cl=3&tn=baidutop10&fr=top1000&rsv_idx=2&hisfilter=1')
res.raise_for_status() #使用这个来检测下载网页是否成功,不成功则报错,成功则什么也不做

9.将网页下载内容写入文档
import requests

res=requests.get('https://www.baidu.com/s?wd=%E6%96%B0%E4%B8%80%E8%82%A1%E5%BC%BA%E5%86%B7%E7%A9%BA%E6%B0%94%E6%9D%A5%E8%A2%AD%E5%B1%80%E5%9C%B0%E9%99%8D%E6%B8%A9%E8%B6%8510%E2%84%83&sa=fyb_n_homepage&rsv_dl=fyb_n_homepage&from=super&cl=3&tn=baidutop10&fr=top1000&rsv_idx=2&hisfilter=1')

res.raise_for_status()

file=open('downloadfile.txt','wb') # wb参数表示“写二进制”模式打开文件,不论下载的网页是什么格式,都必须用此方式。目的是保存网页中的“Unicode 编码
for chunk in res.iter_content(100000): # 注意:写入文档的固定格式
    file.write(chunk)
file.close()

10.不要用正则表达式来解析html,因为html格式可以有许多不同的方式,用正则表达式来捕捉会更加繁琐。而应该采用专门解析HTML的模块:Beautiful Soup

11.下载的网页用BeautifulSoup变量保存
import requests,bs4

res=requests.get('https://www.baidu.com/s?wd=%E6%96%B0%E4%B8%80%E8%82%A1%E5%BC%BA%E5%86%B7%E7%A9%BA%E6%B0%94%E6%9D%A5%E8%A2%AD%E5%B1%80%E5%9C%B0%E9%99%8D%E6%B8%A9%E8%B6%8510%E2%84%83&sa=fyb_n_homepage&rsv_dl=fyb_n_homepage&from=super&cl=3&tn=baidutop10&fr=top1000&rsv_idx=2&hisfilter=1')

res.raise_for_status()

noStarchSoup=bs4.BeautifulSoup(res.text)
print(type(noStarchSoup))

12.直接把网页文件保存到BeautifulSoup变量中
import requests,bs4

file=open('example.html')

noStarchSoup=bs4.BeautifulSoup(file)
print(type(noStarchSoup))

13.对网页内容进行操作
import requests,bs4

file=open('example.html')

soup=bs4.BeautifulSoup(file)
elelist=soup.select('#author')
print(type(elelist))

print(soup.select('div')) #所有名为<div>的元素
print(soup.select('#author')) #带有 id 属性为 author 的元素
print(soup.select('.notice')) #所有使用 CSS class 属性名为 notice 的元素
print(soup.select('div span')) #所有在<div>元素之内的<span>元素
print(soup.select('div > span')) #所有直接在<div>元素之内的<span>元素,中间没有其他元素
print(soup.select('input[name]')) #所有名为<input>,并有一个 name 属性,其值无所谓的元素
print(soup.select('input[type="button"]')) #所有名为<input>,并有一个 type 属性,其值为 button 的元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值