2013-10-12 96 views
0

我想知道是否有任何方式在瀏覽器中打開url並閱讀源打開的url? 我試圖檢查我的XPath選擇器是否正確獲取了captcha img src的值。我不能這樣做2連接到URL導致captcha將重新加載每一次我連接到URL。如何閱讀已在瀏覽器中打開的源網站

用於讀取源我正在使用:

url = "https://prod.ceidg.gov.pl/CEIDG/CEIDG.Public.UI/Search.aspx" 
sock = urllib.urlopen(url) 
htmlSource = sock.read()        
sock.close() 

要打開瀏覽器的URL我使用:

if sys.platform=='win32': 
    os.startfile(url) 
elif sys.platform=='darwin': 
    subprocess.Popen(['open', url]) 
else: 
    try: 
     subprocess.Popen(['xdg-open', url]) 

    except OSError: 
     print 'Please open a browser on: '+url 

是否有任何你們知道該如何解決呢?

感謝

回答

0

大多數跨平臺的Python GUI工具包,如wx.Python,pyside等,都可以用它來從你的Python中顯示HTML源的HTML顯示窗口。我會建議使用其中之一來顯示您的內容從您的Python代碼。

+0

我會嘗試wx.Python。希望我會找到一些使用示例 – LukeJ

0

您可能需要發出多個請求才能獲取驗證碼。給自己一份小提琴手2(免費)http://fiddler2.com/get-fiddler的副本。它可以讓你看到服務器和瀏覽器之間的「對話」。一旦你看到了,你可能會知道你需要什麼。

+0

我不需要提出多個請求:) – LukeJ

+0

實際上,如果仔細檢查內容,您將發現需要完成大量的服務器請求。特別是這個URL,相對於引用者來說,「captcha.ashx?id = ac2ddb38-4675-43e1-96d0-717e6ff15e16&asmp3 = 1&t =」是爲您提供CAPTCHA服務的人。通過在您的系統上使用selenium和Firefox的webdriver組件,您可以將它隱藏起來 - 它負責完成所有必要的請求。 –

1

我找到了解決辦法。要查看網址在瀏覽器中,並在同一時間看到這個頁面的源代碼,只需使用此代碼:

from selenium import webdriver 
from lxml import etree, html 

url = "https://prod.ceidg.gov.pl/CEIDG/CEIDG.Public.UI/Search.aspx" 
adres_prefix = "https://prod.ceidg.gov.pl/CEIDG/CEIDG.Public.UI/" 
adres_sufix = etree.XPath('string(//img[@class="captcha"]/@src)') 

browser = webdriver.Firefox() 
browser.get(url) 
html_source = browser.page_source # i'm getting source code of open url 

root = etree.HTML(html_source) 
result = etree.tostring(root, pretty_print=True, method="html") 
result2 = adres_sufix(root) 
www = adres_prefix + result2 
print www # now i see if XPath gives me right value 

希望這將有助於其他 不管怎樣,謝謝您的幫助

相關問題