网络爬虫技术与异常处理

在当今信息爆炸的时代,数据成为了对抗世界的重要武器。无论是在数据科学项目中训练机器学习模型,还是在日常生活中获取信息,数据的需求都在不断增长。网络爬虫作为一种基础技术,能够从网站中提取所需的有用数据。尽管网站结构复杂多变,但Python中有一些出色的库可以帮助轻松地从动态或静态网站中提取数据,如BeautifulSoup、Scrapy和Selenium等。

BeautifulSoup库简介

BeautifulSoup是一个Python库,用于从HTML、XML以及其他标记语言中提取数据。当打开一个网站,发现有很多需要的数据,但网站提供商没有提供下载数据的方式时,BeautifulSoup可以帮助提取页面上的特定内容。只需要去除HTML内容,只保留所需的数据。它是一个网络爬虫工具,帮助清理和解析从网络上抓取下来的文档。

编写爬虫脚本时的异常处理

在编写代码时,经常会遇到各种错误,这些错误有其类型。同样,当使用BeautifulSoup进行网站内容抓取时,也会遇到一些异常,它们有多种类型。

如果在编写网络爬虫脚本时提供了错误的URL,就会发生URL异常。简而言之,当请求错误的网站时,就会触发这种异常。如果编译器中出现异常,通常会显示服务器未找到错误。

import requests from urllib.error import URLError link = 'https://www.amaz.in/s/ref=nb_sb_ss_ts-doa-p_3_3?url=search-alias%3Daps&field-keywords=basketball&sprefix=bas%2Caps%2C458&crid=3STPJQX67B7GD' try: response = requests.get(link) except URLError as url_error: print("服务器未找到") else: print("没有错误")

在上面的程序输出中,提供的链接对服务器来说是有效的,所以不会有URL错误。如果提供错误的链接给服务器,会发生什么呢?

当在某个地方遇到问题,周围没有人时,情况会变得很糟糕。类似地,如果提供了一个服务器上不存在的链接或URL,就会陷入错误。简而言之,如果在请求服务器时提供了错误的链接,然后执行它,就会显示错误或异常,即页面未找到。

import requests from urllib.error import HTTPError url = 'http://pythonscraping.com/blog/second-edition-changes' try: response = requests.get(url) except HTTPError as http_error: print(http_error) else: print("运行正常")

如所见,提供的链接是正确的,程序运行正常,没有异常发生。现在,如果改变链接,会发生什么呢?

这是在编写脚本时经常遇到的一个通用异常,但可能并不了解它。BeautifulSoup的功能之一是可以轻松地将任何文档解析成HTML格式,这样更容易阅读。在编写脚本时,如果遇到这个错误,不要害怕,它可以通过使用BeautifulSoup来克服。

soup = BeautifulSoup(response, 'xml-xml') # 或者 soup = BeautifulSoup(response, 'xml') import requests import bs4 link = 'https://pythonscraping.com/blog/second-edition-changes' response = requests.get(link) soup = bs4.BeautifulSoup(response.text,'xml') result = soup.find('div',class_='不存在于HTML文档中的类') print(result)
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485