首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selenium3 Python3如何从属性style=获取url“背景-图像: ur,”并且有一个url

Selenium3 Python3如何从属性style=获取url“背景-图像: ur,”并且有一个url
EN

Stack Overflow用户
提问于 2017-02-12 13:07:29
回答 1查看 925关注 0票数 1

要从属性url获取url,我的意思是url本人的风格?Style=“宽度:433 for;高度:510 for;背景图像: url(https://cs7056.vk.me/c635104/v635104607/1c316/ADzy-2WY8pw.jpg)”Selenium3 Python3轻松为您!

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import re
import time


url = 'https://vk.com/uporols_you'
driver                          = webdriver.Firefox(executable_path='C:/Users/PANDEMIC/AppData/Local/Mozilla/geckodriver.exe')

def login(driver):
    log_page                    = driver.get('https://login.vk.com/?act=login')
    find_login_input            = driver.find_element_by_id('login_form').find_element_by_id('email').send_keys('+77782303865')
    find_password_input         = driver.find_element_by_id('login_form').find_element_by_id('pass').send_keys('pass')
    find_button                 = driver.find_element_by_xpath('//button[@id="login_button"]').click()
    time.sleep(5)



def get_photo_from_page(driver):
    driver.get(url)
    try:
        driver.find_element_by_class_name('popup_box_container').find_element_by_class_name('box_title_wrap').find_element_by_class_name('box_x_button').click()
    except:
        print('nope nothing')

    for i in range(2):
        scrol_down = driver.find_element_by_id('public_wall').find_element_by_id('wall_more_link').click()
        time.sleep(2)

    tut = []
    #t = (a[@class="page_post_thumb_wrap image_cover  page_post_thumb_last_column page_post_thumb_last_row"])
    for ii in driver.find_elements_by_xpath('//a[@style]'):
        o = ii.get_attribute('style')
        print(o)
    #soup = BeautifulSoup(htlm, 'lxml')
    #im = soup.find_all('a', class_="'page_post_thumb_wrap image_cover  page_post_thumb_last_column page_post_thumb_last_row'")
    #print(htlm)
    #for a in im:
    #   s = a.get('data-src_big').split('|')[0]
    #   tut.append(s)
    #print(tut) 

    #for num, link in enumerate(tut, start=1):
    #   p = requests.get(link)
    #   out = open("img%s.jpg" % (num), 'wb')
    #   out.write(p.content)
    #   out.close()


def main():
    login(driver)
    get_photo_from_page(driver)


if __name__ == '__main__':
    main()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-12 16:19:42

在这种情况下,您只需解析已经能够在脚本中收集到的样式字符串。

只需将此函数添加到代码中:

代码语言:javascript
复制
def parse_style_attribute(style_string):
    if 'background-image' in style_string:
        style_string = style_string.split(' url("')[1].replace('");', '')
        return style_string
    return None

这是一个简单的字符串解析,如果字符串中有“背景图像”,则提取url;如果没有图像,则返回None。

然后,您可以在代码中使用它:

代码语言:javascript
复制
links = list()
for ii in driver.find_elements_by_xpath('//a[@style]'):
    o = ii.get_attribute('style')
    links.append(parse_style_attribute(o))
links = [link for link in links if link is not None]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42187922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档