如何使用硒从内联 css 获取背景图像
How to get background-image from inline css using selenium
使用 python 如何使用 selenium 获取背景图像?哪个有内联 CSS?我想从背景图像中获取图像 URL:url()
<div id="pic" class="pic" data-type="image" style=" background-image: url(http://test.com/images/image.png;); height: 306px; background-size: cover;"></div>
要获取背景图片,您需要使用 value_of_css_property(property_name)
method and you have to induce WebDriverWait for the visibility_of_element_located()
and you can use either of the following :
使用CSS_SELECTOR
:
import re
my_property = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.pic#pic[data-type='image']"))).value_of_css_property("background-image")
print(re.split('[()]',my_property)[1])
使用XPATH
:
import re
my_property = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='pic' and @id='pic'][@data-type='image']"))).value_of_css_property("background-image")
print(re.split('[()]',my_property)[1])
控制台输出:
test.com/images/image.png
更新
由于 url 被双引号括起来,即 "..."
您可以使用以下解决方案:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='pic' and @id='pic'][@data-type='image']"))).value_of_css_property("background-image").split('"')[1])
参考资料
您可以找到一些与以下相关的相关讨论:
- 正在检索
中的背景
- 正在检索
中的子字符串
试试这个:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.pic#pic[data-type='image']"))).get_attribute("href"))
要获得 URL
您需要使用 regular expression
。
为了使用正则表达式Import re
然后使用下面的正则表达式.
import re
itemimage=WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "div#pic"))).value_of_css_property("background-image")
print(re.search("(?P<url>http?://[^\s;]+)", itemimage).group("url"))
输出:
http://test.com/images/image.png
my_setup = WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH, "//body/div[@class='container']/div[@class='row']/div[@class='card-stack']/div/div[1]/div[1]"))).value_of_css_property("background-image")
image_url = re.split('[()]',my_setup)[1]
实际使用它对我来说效果很好..
主要事情..
.value_of_css_property("background-image")
不适用于列表
使用 python 如何使用 selenium 获取背景图像?哪个有内联 CSS?我想从背景图像中获取图像 URL:url()
<div id="pic" class="pic" data-type="image" style=" background-image: url(http://test.com/images/image.png;); height: 306px; background-size: cover;"></div>
要获取背景图片,您需要使用 value_of_css_property(property_name)
method and you have to induce WebDriverWait for the visibility_of_element_located()
and you can use either of the following
使用
CSS_SELECTOR
:import re my_property = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.pic#pic[data-type='image']"))).value_of_css_property("background-image") print(re.split('[()]',my_property)[1])
使用
XPATH
:import re my_property = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='pic' and @id='pic'][@data-type='image']"))).value_of_css_property("background-image") print(re.split('[()]',my_property)[1])
控制台输出:
test.com/images/image.png
更新
由于 url 被双引号括起来,即 "..."
您可以使用以下解决方案:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='pic' and @id='pic'][@data-type='image']"))).value_of_css_property("background-image").split('"')[1])
参考资料
您可以找到一些与以下相关的相关讨论:
- 正在检索
- 正在检索
试试这个:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.pic#pic[data-type='image']"))).get_attribute("href"))
要获得 URL
您需要使用 regular expression
。
为了使用正则表达式Import re
然后使用下面的正则表达式.
import re
itemimage=WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "div#pic"))).value_of_css_property("background-image")
print(re.search("(?P<url>http?://[^\s;]+)", itemimage).group("url"))
输出:
http://test.com/images/image.png
my_setup = WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH, "//body/div[@class='container']/div[@class='row']/div[@class='card-stack']/div/div[1]/div[1]"))).value_of_css_property("background-image")
image_url = re.split('[()]',my_setup)[1]
实际使用它对我来说效果很好..
主要事情..
.value_of_css_property("background-image")
不适用于列表