并非所有 eBay 列表都相同,因为某些页面使用的格式与其他页面不同。我希望我的代码找到“price”元素,如果它不存在,请尝试不同的方法。我创建了下面的代码,但我想知道什么是更好的方法?
item = driver.find_element_by_xpath('//*[@id="prcIsum"]').text.strip().split()
if len(item.text) > 0:
price = item.text
item = driver.find_element_by_xpath('//*[@id="mm-saleDscPrc"]')
if len(item.text) > 0:
price = item.text
else:
price = ""
随着Selenium
如果元素不存在,它会产生错误,所以你将不得不使用的try /除外
import selenium.webdriver
url = 'https://toscrape.com/'
url = 'http://books.toscrape.com/'
driver = selenium.webdriver.Firefox()
driver.get(url)
try:
item = driver.find_element_by_xpath('//tag').text.strip()
except Exception as ex:
print(ex)
try:
item = driver.find_element_by_xpath('//a').text.strip()
except Exception as ex:
print(ex)
item = ''
print(item)
有了BeautifulSoup
你可以得到None
(或空列表),所以你必须在收到文本之前检查它。
import selenium.webdriver
url = 'https://toscrape.com/'
url = 'http://books.toscrape.com/'
driver = selenium.webdriver.Firefox()
driver.get(url)
from bs4 import BeautifulSoup as BS
soup = BS(driver.page_source, 'html.parser')
item = soup.find('tag')
if item:
item = item.get_text(strip=True)
else:
item = soup.find('a')
if item:
item = item.get_text(strip=True)
else:
item = ''
print(item)
或者你可以尝试在里面获取文本 ttry/except
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句