🏐导读
- 🎈创建虚拟环境易于保存
- 创建虚拟环境的原因及方法
- 🎈异常补充
- PART Ⅰ >>> 获得HTML过程中可能遇到的异常
- 网页在服务器上不存在
- 服务器不存在
- PART Ⅱ >>> 在查找标签时遇到的异常
- 该标签不存在时 >>> 返回None类型 >>> 即是仍然会获得,不会报错
- 再查找该标签的子标签时 >>> 报错
- 使程序易于捕捉异常
- PART Ⅰ >>> 获得HTML过程中可能遇到的异常
- 🎈优美地查找元素
- 🎏查找元素的bs4基本方法
- 🎐select()
- 🎱补充关于css中
div > p
的疑惑
- 🎱补充关于css中
- 🎐find() / findAll()
- 🎐select()
- 🎏 来遍历吧 ——导航树
- 🎐下行遍历
- .contents
- .children
- .descendants
- 🎐上行遍历
- .parent
- .parents
- 🎐平行遍历
- .next_sibling
- .previous_sibling
- .next_siblings
- .previous_siblings
- 🎐下行遍历
- 🎏查找元素的bs4基本方法
- 🎈信息查找
- 🎏信息标记形式
- XML
- JSON
- YAML
- 🎏正则表达式
- 🎐常规操作符
- 🎐re库基本函数介绍
- 🎐re库面向对象写法
- 🎐re库的match对象
- 🎏 Lambda
- 🎏信息标记形式
🎈创建虚拟环境易于保存
创建一个虚拟环境,在里面安装库文件,可以不用担心某个项目及其关联的库文件冲突;并且当要发送给别人的时候可以轻松打包整个环境,只要python版本相同,就可以直接在虚拟环境运行,而不需要再装库。
🎱补充虚拟与正常安装区别: 我们平时直接pip install 某python库
实际上是全局安装它,这通常需要有管理员权限或者以root身份安装,这个库文件对设备上的每一个用户和每一个项目都是存在的。
👇虚拟环境如何安装?
首先需要pip install virtualenv
然后virtualenv envriment-name
接着需要激活它
> cd enviroment-name
> source bin/activate
激活后,会发现环境名称出现在命令提示符前面,提示你现在在虚拟环境中。然后该怎么操作怎么操作即可。
当不再用时,通过释放命令来退出环境
> deactivate
🎈异常补充
我们应该有着一个易于捕捉异常又容易与阅读的程序代码,还应该希望能够很大程度上重用代码,所以要写像getSiteHTML这种通用函数,更是要有着周密的异常处理功能。
PART Ⅰ >> 获得 HTML
from urllib.requst import urlopen
from urllib.error import HTTPError
r = urlopen(url)
可能出现的异常
-
网页在服务器上不存在(或者获取页面时出现错误)
-
服务器不存在
第一种异常出现时,程序会返回HTTP错误。HTTP错误可能是"404 Page Not Found" "500 Internal Server Error"等。所有类似情形函数都会抛出"HTTPError"异常。我们可以用以下方式处理👇try: r = urlopen(url) except HTTPError as e: print(e)
如果程序返回HTTP错误代码,程序就会出现错误内容。
如果服务器不存在——链接打不开/url连接写错了,就会返回一个None对象,由此我们可以再增加一个判断是不是none
if r is None:
print("URL is not found")
else:
# 程序继续的代码
PART Ⅱ >> bs解析过程
-
标签对象不存在 >>> 返回None对象
-
None对象的子标签 >>> AttributeError错误
from urllib.request import urlopen from urllib.error import HTTPError from bs4 import BeautifulSoup def getHTML_title(url): try: html = urlopen(url) except HTTPError as e: return None try: obj = bs4.BeautifulSoup(html.read()) title = obj.body.h1 except AttributeError as e: return None return title title = getHTML_title(url) if title == None: # PART Ⅰ异常中的第二种/其他中全是None时。 print("title could not found") else: print(title)