我是一名建筑修复专业的学生,我正在学习刮擦。我正在从西班牙的教堂收集数据。为此,我正在与Catastro网站合作。我正在收集数据,但我在获取图像的src时遇到了麻烦。
接下来,我把我创建的代码的一部分抛出一个错误在# Get the URL of the image part.当我从浏览器手动访问时,如果我能找到图像,但我找不到方法用Selenium.这可能是因为元素在嵌套的::before
中?
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
# Start a webdriver session using Firefox
driver = webdriver.Firefox()
# Go to the website
driver.get("https://www1.sedecatastro.gob.es/Cartografia/mapa.aspx?refcat=9271101WJ9197A&from=OVCBusqueda&pest=rc&final=&RCCompleta=9271101WJ9197A0001BR&ZV=NO&ZR=NO&anyoZV=&tematicos=&anyotem=&del=2&mun=900")
# Wait until the map element is present and click on its center
map_element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, '//*[@id="map"]'))
)
driver.execute_script("arguments[0].scrollIntoView(true);", map_element)
map_element.click()
# Get the URL of the image
img_element = driver.find_element_by_xpath('//*[@id="ImgFachada0"]')
# Get the src attribute of the image element
img_src = img_element.get_attribute("src")
# Print the src of the image
print(img_src)
2条答案
按热度按时间jyztefdp1#
在执行以下代码之前,您需要首先处理一个帧:
解决方案:-使用以下代码切换到框架,然后执行其他操作
driver.switch_to.frame(driver.find_element(By.XPATH,"//div[@class='modal-content']//iframe"))
供您参考的完整工作代码:
控制台输出:
在iframe上执行操作后,不要忘记切换回主页:
**HTML中的iframe供您参考:**x1c 0d1x
jvidinwx2#
所需的
<img>
元素位于<iframe>
:溶液
要提取 *
src
* 属性的值,您必须:参考
您可以在以下位置找到一些相关讨论: