Beautiful Soap 查找/尝试可能存在“NoneType”错误的不同类元素

我正在使用 beautiful soup 来从 url 中获取元素。页面上有些元素的类名称会根据值和百分比(向上、向下、平坦)而变化。显然,如果我尝试soup.find('div', class_='down-indicator')并且这是一个积极的指标,我将收到如下错误:AttributeError: 'NoneType' object has no attribute 'find'。我需要一种 Pythonic 方式来循环或尝试 3 个可能的类选项,而不会出现错误破坏我的代码。


我也尝试res = soup.find('div', class_='down-indicator')过执行 aif res is None...但它不会返回None它会返回错误。


任何信息和学习将不胜感激!预先感谢您,这是我对某些代码的糟糕尝试:


根据元素的不同,这 2 个 url 对于同一区域具有不同的类名称。


url = 'http://www.stockx.com/adidas-yeezy-boost-380-lmnte-infants'

url = 'http://www.stockx.com/adidas-yeezy-boost-350-oxford-tan'

这些是find()元素的确切函数,因为它可以向上、向下或平坦:


soup.find('div', class_='last-sale-value market-dir market-dir-down').find('div', class_='dollar').text

soup.find('div', class_='last-sale-value market-dir market-dir-up').find('div', class_='dollar').text

soup.find('div', class_='last-sale-value market-dir market-dir-static').find('div', class_='dollar').text



driver = webdriver.Firefox()

driver.get(url)

content = driver.page_source

soup = BeautifulSoup(content, 'lxml')


try:

    result = soup.find('div', class_='up-indicator').text

    result = soup.find('div', class_='down-indicator').text

    result = soup.find('div', class_='flat-indicator').text

except:

    pass


人到中年有点甜
浏览 126回答 1
1回答

千万里不及你

在这两种情况下,解决方案都相当简单:soup.select_one('div.dollar').text输出是相关页面的目标美元金额。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python