2017-02-12 22 views
0

属性urlからurlを取得するにはどうすればいいですか?高さ:510px;背景画像:のURL(https://cs7056.vk.me/c635104/v635104607/1c316/ADzy-2WY8pw.jpg)あなたのために」Selenium3のpython3は簡単にその特定のケースでSelenium3 Python3属性のスタイル= "background-image:ur、"からurlを取得する方法とURLがある "

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() 

答えて

1

、あなたはちょうどあなたがすでにあなたのスクリプトで集めることができたスタイルの文字列を解析でき

だけ!。あなたのコードにこの機能を追加します。

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を返し

次に、あなたのコードでそれを使用することができます。

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] 
+0

が、どのようにこの[なし、なし、なし、なし、「https://pp.vk.me/c638718/v638718210/1b8a6/Fwbewm68Algを削除しないように。 jpg '、from this' https://cs7056.vk.me/c635104/v635104607/105ca/AmvyePsSzyM.jpg '、 –

+0

リストの理解を使ってNoneを取り除くことができます。私の答えの編集を見てください。 –

関連する問題