【发布时间】:2018-06-06 20:45:27
【问题描述】:
我在 python 中结合 selenium 编写了一个脚本来解析网页中的某个链接。该链接位于iframe 内。我尝试切换到它,但无法从中读取内容以获取我所追求的特定链接。
这里是如何到达那里:
有一个免费的登录链接。
登录后网站自动跳转到所需内容的首页。
那里的名字(成员)很少,他们的每个个人资料都有链接。
进入该个人资料页面后,有一个指向他们当前公司的链接(位于专业经验下),这是我希望解析的。
第一个个人资料中所需的链接(根据专业经验)看起来像like this:
这是我迄今为止尝试过的脚本:
from selenium import webdriver
from urllib.parse import urljoin
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
link = "https://www.xing.com"
driver = webdriver.Chrome()
driver.get("replace with above link")
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#login_form_username"))).send_keys("user")
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#login_form_password"))).send_keys("pass",Keys.RETURN)
links = [urljoin(link,items.find_element_by_css_selector(".user-name").get_attribute("href")) for items in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".contact")))]
for link in links:
driver.get(link)
name = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "h2 span"))).text
wait.until(EC.frame_to_be_available_and_switch_to_it(driver.find_element_by_css_selector("#tab-content")))
#I get timeout exception in the following line
link = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".job-company-name a"))).text
print(name,link)
我不知道这是否有帮助。无论如何,link to the source
【问题讨论】:
-
当前输出是多少?您可以成功切换到框架,但在
ilink定义上获得NoSuchElementException? -
在您的回答中,您使用
@id搜索来查找 iframe,而在您的问题中 - 按标签名称搜索...如果页面上有多个iframe,您可能切换到不包含所需元素的错误iframe -
先生,我两个都试过了。
-
如果不查看页面源,很难判断出什么问题。恕我直言,您的解决方案不是处理 iframe 的最佳方式... :)
-
这实际上不是一个解决方案,只是一种解决方法。
标签: python python-3.x selenium selenium-webdriver web-scraping