python抓取动态网页(PythonPyQt4的思路和动态解析页面信息的解决思路!)

优采云 发布时间: 2021-11-30 07:18

  python抓取动态网页(PythonPyQt4的思路和动态解析页面信息的解决思路!)

  很久以前,在学习Python web编程的时候,涉及到一个Python urllib。您可以使用 urllib.urlopen("url").read() 轻松读取页面上的静态信息。但是,随着时代的发展,越来越多的网页使用jQuery、PHP等语言来动态生成页面信息。因此,使用urllib抓取页面的HTML还不足以达到预期的效果。

  解决方案:

  动态分析页面信息有一个最简单的想法。 Urllib 无法解析动态信息,但浏览器可以。浏览器上显示的处理信息实际上是经过处理的HTML文档。这为我们抓取动态页面信息提供了一个很好的思路。 Python-PyQt 中有一个著名的图形库。虽然 PyQt 是一个图形库,但它在 QtWebkit 内部。这是非常实用的。谷歌的Chrome和苹果的Safari都是基于WebKit核心开发的,所以我们可以通过PyQt中的QtWebKit将页面中的信息读取加载到HTML文档中,然后解析HTML文档,从我们要使用的HTML文档中提取出来信息。

  所需材料:

  作者本人使用的是 Mac OS X,Windows 和 Linux 平台应该使用相同的方法。

  1、Qt4 库

  库,而不是创建者。 Mac默认安装路径下的库应该是/home/username/Developor/,Qt4默认安装路径不要改动。否则安装可能会失败。

  官网:

  2、SIP、PyQt4

  这两个软件可以在PyQt官网找到。源代码已下载。 Mac和Linux需要自己编译。

  下载地址为:

  在终端中,切换到解压文件所在的目录。

  在终端输入

  python configure.py

  制作

  sudo make install

  安装和编译。

  SIP 和 PyQt4 的安装方法是一样的。但是 PyQt4 依赖于 SIP。所以先安装SIP再安装PyQt4

  1、2 两步完成后,安装Python PyQt4模块。在Python shell中输入import PyQt4,看看能不能找到PyQt4模块。

  3、Spynner

  spynner 是一个 QtWebKit 客户端,可以模拟浏览器完成加载页面、触发事件、填写表单等操作。

  这个模块可以在 Python 的官方网站上找到。

  下载地址:

  解压后cd到安装目录,然后输入sudo python configure.py install安装模块。

  这样Spynner模块的安装就完成了。在python shell中尝试import spynner,看看是否安装了模块。

  Spynner 的简单使用

  Spynner的功能很强大,但由于本人能力有限,下面介绍一下网页源代码的显示方式。

  [python] 查看普通副本

  #!/usr/bin/python#-*-coding:utf-8-*-importspynnerbrowser=spynner.Browser()#创建浏览器对象browser.hide()#打开浏览器并隐藏。 browser.load("")#browser类有一个类方法load,可以使用webkit来加载你要加载的页面信息。 #load(是你要加载的URL的字符串形式)printbrowser.html.encode("utf-8")#浏览器类的成员之一是html,就是页面后面的源码的字符串已处理#转码为UTF-8编码 open("Test.html",'w+').write(browser.html.encode("utf-8"))#也可以写成文件,浏览 设备打开。 browser.close()#关闭浏览器

  通过这个程序,你可以很方便的显示webkit处理的页面的HTML源代码。

  Spynner 应用程序

  先介绍一下spynner的简单应用。通过一个简单的程序,你就可以得到你在浏览器中看到的页面的所有图片。可以使用 HTMLParser、BeautifulSoup 等来解析 HTMLParser 文档。我选择 HTMParser。

  [python] 查看普通副本

  #!/usr/bin/pythonimportspynnerimportHTMLParserimportosimporturllibclassMyParser(HTMLParser.HTMLParser):defhandle_starttag(self,tag,attrs):iftag=='img':url=dict(attrs)['src']name=os.path。 basename(dict(attrs)['src'])ifname.endswith('.jpg')orname.endswith('.png')orname.endswith('gif'):print"下载.....",nameurllib .urlretrieve(url,name)if__name__=="__main__":browser=spynner.Browser()browser.show()browser.load("")Parser=MyParser()Parser.feed(browser.html)print"Done" browser.close()

  通过这个程序,您可以下载您在页面上看到的所有图片。几行简单的程序就可以完成这项艰巨的任务。实现图片的批量处理。这确实是Python语言的优势,所以就让繁重的任务交给第三方吧。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线