2015-08-06 2 views
1

Я пытаюсь написать сценарий, используя Selenium для доступа к pastebin, выполнить поиск и распечатать в тексте результаты URL. Мне нужны видимые URL-адреса и ничего больше.Python, Selenium и Beautiful Soup для URL

<div class="gs-bidi-start-align gs-visibleUrl gs-visibleUrl-long" dir="ltr" style="word-break:break-all;">pastebin.com/VYQTSbzY</div> 

Текущий сценарий:

import time 
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 selenium.webdriver.common.keys import Keys 
from bs4 import BeautifulSoup 

browser = webdriver.Firefox() 
browser.get('http://www.pastebin.com') 

search = browser.find_element_by_name('q') 
search.send_keys("test") 
search.send_keys(Keys.RETURN) 

soup=BeautifulSoup(browser.page_source) 

for link in soup.find_all('a'): 
    print link.get('href',None),link.get_text() 

ответ

1

Вы на самом деле не нужно BeautifulSoup. selenium сам по себе является очень мощной в установочном элементе:

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 selenium.webdriver.common.keys import Keys 


browser = webdriver.Firefox() 
browser.get('http://www.pastebin.com') 

search = browser.find_element_by_name('q') 
search.send_keys("test") 
search.send_keys(Keys.RETURN) 

# wait for results to appear 
wait = WebDriverWait(browser, 10) 
results = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.gsc-resultsbox-visible"))) 

# grab results 
for link in results.find_elements_by_css_selector("a.gs-title"): 
    print link.get_attribute("href") 

browser.close() 

Печать:

http://pastebin.com/VYQTSbzY 
http://pastebin.com/VYQTSbzY 
http://pastebin.com/VAAQCjkj 
... 
http://pastebin.com/fVUejyRK 
http://pastebin.com/fVUejyRK 

Обратите внимание на использовании Explicit Wait, который помогает ждать результаты поиска появляется.

+0

Alecxe большое спасибо, что мне сейчас нужно, чтобы играть больше. Selenium - это потрясающе. Снова спасибо –

+0

Поскольку я новичок как в python, так и в selenium, можно будет напечатать результаты следующим образом. Califonia Online тест дорожной школы ответы ответы - pastebin.com Pastebin.com/vyqtsby Hiiiii chem. 4 - pastebin.com Pastebin.com/VAAQCjkj Спасибо –

+0

Если по какой-либо причине все еще хотелось использовать синтаксический анализ bs4, это можно сделать так: 'html = result.get_attribute ('outerHTML')', где 'result' должен содержать все соответствующие html для анализа. Тогда bs4 может использоваться обычно: 'soup = BeautifulSoup (html, 'html.parser')' – J0ANMM

Смежные вопросы