Beautiful Soup错误处理
BeautifulSoup 是一个 Python 模块,用于从抓取的网站中查找特定的网站内容/标签,有时,在从网站上接收的过程中,我们的数据我们遇到了几种类型的讨论错误,其中一些是无法理解的,而另一些是的错误。到的异常类型。BeautifulSoup中有两种主要的错误需要处理。这两个错误不是来自您的脚本,而是来自代码片段的结构,因为BeautifulSoupAPI会引发错误。
当我们获取网站内容的时候,我们需要了解在获取过程中发生的一些错误。错误可能是HTTP错误、URL Error、Attribute Error或XML Parser Error,本文晓得博客为你介绍Beautiful Soup错误处理。
HTTP错误
当在服务器上不存在或无法在我们的网站上显示执行网络抓取操作时,会发生 HTTPError。错误 “页面未找到” 在终端上
例子:
import requests
from urllib.error import HTTPError
url = 'https://www.pythonthree.com/python_basic/beautiful-soup-tutorial/'
try:
response = requests.get(url)
response.raise_for_status()
except HTTPError as hp:
print(hp)
else:
print("it's worked")
输出:
it's worked
我们提供的 URL 链接运行正常,没有发生错误。 现在我们通过更改链接看到 HTTPError。
import requests
from urllib.error import HTTPError
url = 'https://www.pythonthree.com/page-that-do-not-exist/'
try:
response = requests.get(url)
response.raise_for_status()
except HTTPError as hp:
print(hp)
else:
print("it's worked")
输出:
404 Client Error: Not Found for url
属性错误
BeautifulSoup 中的 AttributeError 在进行无效属性引用或属性分配失败时引发。 当在代码执行期间我们将错误的属性传递给一个与该函数没有关系的函数时,就会发生 AttributeError。 当我们尝试使用来自网站的 BeautifulSoup 访问标签并且该标签不存在于该网站上时,BeautifulSoup 总是给出 AttributeError。
我们举一个很好的例子来解释使用 BeautifulSoup 进行网页抓取的 AttributeError 的概念:
import requests
import bs4
url = 'https://www.pythonthree.com/python_basic/beautiful-soup-tutorial/'
response = requests.get(url)
soup = bs4.BeautifulSoup(response.text, 'html.parser')
print(soup.NoneExistingTag.SomeTag)
输出:
AttributeError: 'NoneType' object has no attribute 'SomeTag'
XML 解析器错误
我们在编写网页抓取脚本时都会遇到 XML 解析器错误,在 BeautifulSoup 的帮助下,我们很容易将文档解析为 HTML。 如果我们停留在解析器错误上,那么我们可以使用 BeautifulSoup 轻松克服这个错误,而且它非常易于使用。
当我们从网站解析 HTML 内容时,我们通常在 BeautifulSoup 构造函数的参数中使用 “xml” 或 “XML-xml” 。 它是作为 HTML 文档之后的第二个参数编写的。
语法:
soup = bs4.BeautifulSoup( response, ‘ xml ‘ )
soup = bs4.BeautifulSoup( response, ‘ xml -xml’ )
当我们没有在 find() 和 find_all() 函数中传递任何元素或文档中缺少元素时,通常会发生 XML 解析器错误。 它有时会给出空括号 [] 或 没有任何 作为它们的输出。
import requests
import bs4
url = 'https://www.pythonthree.com/python_basic/beautiful-soup-tutorial/'
response = requests.get(url)
soup = bs4.BeautifulSoup(response.text,'xml')
print(soup.find('div',class_='that not present in html content'))
输出:
None
总结
以上是晓得博客为你介绍Beautiful Soup错误处理的全部内容,如有问题,欢迎留言讨论。
Claude、Netflix、Midjourney、ChatGPT Plus、PS、Disney、Youtube、Office 365、多邻国Plus账号购买,ChatGPT API购买,优惠码XDBK,用户购买的时候输入优惠码可以打95折