【发布时间】:2019-12-01 12:09:30
【问题描述】:
我正在尝试从页面中抓取电话号码。一个这样的页面是this。所有页面都包含一个带有文本SEE PHONE NUMBER 的链接按钮,点击它会显示电话号码。我正在尝试抓取那个特定的电话号码。这是我迄今为止尝试过的:
company_url = 'https://www.europages.co.uk/PORT-INTERNATIONAL-GMBH/00000004710372-508993001.html'
d = {}
try :
options = webdriver.FirefoxOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--incognito')
options.add_argument('--headless')
driver = webdriver.Firefox(options=options)
driver.get(company_url)
link = driver.find_element_by_link_text('See phone number')
link.click()
driver.close()
page = driver.page_source
soup = bs(page, 'html.parser')
tel_no = soup.find('div', {'class' : 'info-tel-num'})
tel_no = tel_no.text
d['telephone'] = tel_no
except Exception as e:
print(f'Error encountered : {e}')
但每次,它都会在异常块中打印此错误:
遇到错误:消息:无法定位元素:查看电话号码
这个链接按钮没有任何特定的 id 或类,所以我不能使用find_element_by_id 或find_element_by_class。这是我通过该按钮上的检查元素发现的(在单击之前):
这是单击按钮后检查元素的结果:
【问题讨论】:
-
您尝试添加一些等待吗?
-
如果之前出现故障,在
link.click()之后会有什么帮助?这可能是页面加载时间问题,您需要等待才能尝试定位元素。
标签: python selenium xpath css-selectors webdriverwait