2013-10-12 141 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 

希望这将有助于其他 不管怎样,谢谢您的帮助

相关问题