开发者

Opening a website frame or image in python

So i am fairly fluent with python and have used urllib2 and Cookies a lot for website automation. I just stumbled upon the "webbrowser" module which can open a url in your default browser. Im wondering if its possible to select just one object from that url and open that up. Specifically i want to开发者_StackOverflow中文版 open a "captcha" so that the user can input it, and continue doing something else.

this is line containing the captcha in the html, i think:

script type="text/javascript" src="http://api.recaptcha.net/challenge?k=6LcZ-AAAAAAAANX-xwVtzow1f4RpSrbSViRUx9Js"></script>    <input type="submit" name="submitBtn" value="Submit" 

and clicking on that api link opens this:

var RecaptchaState = {
    site : '6LcZ-AAAAAAAANX-xwVtzow1f4RpSrbSViRUx9Js',
    challenge : '03AHJ_VuvoUHPdfoXLsVHGa7a26GR9s9Y5dkyKmqk2XsJ1SdiwF_2u0SV_sKnr1artkpc-5MjUe7SYD40xr7sAyvikKwpFCQTBdKUFfl76UP6EbDhezoTC8B1X8fjixuIJ4wJhI6yTc8vlX4ioh6je9lwFbPXllbGh2w',
    is_incorrect : false,
    programming_error : '',
    error_message : '',
    server : 'http://www.google.com/recaptcha/api/',
    timeout : 18000
};

document.write('<scr'+'ipt type="text/javascript" s'+'rc="' + RecaptchaState.server + 'js/recaptcha.js"></scr'+'ipt>');

any info would help with this.


It's not possible with the webbrowser module. All webbrowser does is provide a simple way to identify the default web browser and feed a URL to it.

If you want to render just a portion of a page, you need something that can either take arbitrary HTML fragments or can inject some Javascript after loading a page to strip out the unwanted elements.

For that, what you need is to build a purpose-specific web browser that's nothing more than a dialog box containing a web widget.

That can be done using any of the following combinations of libraries:

  • PyQt and the included QtWebKit (GPL or Commercial, Windows/Mac/Linux)
  • PySide and the included QtWebKit (LGPL, Linux)
  • PyGTK and PyWebKitGTK (LGPL, Easy on Linux... no clue about Windows or OSX)
  • PyGTK and GTKMozEmbed (LGPL, Easy on Linux... no clue about Windows or OSX)
  • wxPython and the included wxIEHtmlWindow (BSD-like, Windows-only. Embeds Internet Explorer.)
  • wxPython and the included wxWebKitCtrl (BSD-like, OSX-only)
  • wxPython and wxWebKit (BSD-like, Windows/Mac/Linux)

My advice:

  • If GPL licensing is OK, use PyQt.
  • If GPL licensing isn't OK:
    • For Linux, use PySide or PyGTK with PyWebKitGTK (GTKMozEmbed is heavy)
    • For Windows, use wxPython with wxIEHtmlWindow
    • For OSX, you'll have to ask someone else.
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜