Beautiful Soup错误处理

Beautiful Soup错误处理

Beautiful Soup错误处理

  BeautifulSoup 是一个 Python 模块,用于从抓取的网站中查找特定的网站内容/标签,有时,在从网站上接收的过程中,我们的数据我们遇到了几种类型的讨论错误,其中一些是无法理解的,而另一些是的错误。到的异常类型。BeautifulSoup中有两种主要的错误需要处理。这两个错误不是来自您的脚本,而是来自代码片段的结构,因为BeautifulSoupAPI会引发错误。

Beautiful Soup错误处理

  当我们获取网站内容的时候,我们需要了解在获取过程中发生的一些错误。错误可能是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。

Beautiful Soup HTTP错误
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 轻松克服这个错误,而且它非常易于使用。

XML解析器错误

  当我们从网站解析 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错误处理的全部内容,如有问题,欢迎留言讨论。

  推荐:Beautiful Soup 使用教程


晓得博客,版权所有丨如未注明,均为原创
晓得博客 » Beautiful Soup错误处理

转载请保留链接:https://www.pythonthree.com/beautifulsoup-error-handling/

滚动至顶部