• Python 爬取网页中JavaScript动态添加的内容


    Python 爬取网页中JavaScript动态添加的内容

    一、总结

    一句话总结:

    方法一:用Web kit,Web kit 可以实现浏览器所能处理的任何事情,Web kit是QT库的一部分,因此如果你已经安装QT和PyQT4库,那么你可以直接运行之。
    方法二:使用 selenium + phantomjs 实现


    selenium(一个用于web应用程测试的工具)安装:pip install selenium
    phantomjs(是一种无界面的浏览器,用于完成网页的渲染)下载:http://phantomjs.org/download.html

    二、Python 爬取网页中JavaScript动态添加的内容

    转自或参考:Python 爬取网页中JavaScript动态添加的内容(一)
    https://www.cnblogs.com/Jimc/p/9717691.html

    当我们进行网页爬虫时,我们会利用一定的规则从返回的 HTML 数据中提取出有效的信息。但是如果网页中含有 JavaScript 代码,我们必须经过渲染处理才能获得原始数据。此时,如果我们仍采用常规方法从中抓取数据,那么我们将一无所获。那么,通过Web kit可以简单解决这个问题。Web kit 可以实现浏览器所能处理的任何事情。对于某些浏览器来说,Web kit就是其底层的网页渲染工具。Web kit是QT库的一部分,因此如果你已经安装QTPyQT4库,那么你可以直接运行之。

    1、环境准备

    Linux:sudo apt-get install python-qt4

    Windows:https://www.cnblogs.com/Jimc/p/9717238.html

    2、使用

    首先通过 Web kit 发送请求信息,然后等待网页被完全加载后将其赋值到某个变量中。接下来我们利用lxml从 HTML 数据中提取出有效的信息。这个过程需要一点时间。

    import sys
    from PyQt4.QtWebKit import *
    from PyQt4.QtGui import *
    from PyQt4.QtCore import *
    class Render(QWebPage): # 用来渲染网页,将url中的所有信息加载下来并存到一个新的框架中 def __init__(self,url): self.app = QApplication(sys.argv) QWebPage.__init__(self) self.loadFinished.connect(self._loadFinished) self.mainFrame().load(QUrl(url)) self.app.exec_() def _loadFinished(self, result): self.frame = self.mainFrame() self.app.quit() url = 'http://jandan.net/ooxx' r = Render(url) html = r.frame.toHtml() print(html)

     那么,后面的工作就是解析HTML代码了,这里不做讲解。

     
     

    三、使用 selenium + phantomjs 实现

    1、准备环境

    selenium(一个用于web应用程测试的工具)安装:pip install selenium
    phantomjs(是一种无界面的浏览器,用于完成网页的渲染)下载:http://phantomjs.org/download.html

    2、使用

    from selenium import webdriver url = 'http://jandan.net/ooxx' driver = webdriver.PhantomJS( executable_path='D:/Software/phantomjs-2.1.1-windows/bin/phantomjs.exe') # 如果没有配置phantomjs的环境变量,需要手动指定路径 driver.get(url) print(driver.page_source)
     
     
     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    synchronized关键字原理
    http几种请求格式总结
    logback配置
    docker部署nacos单机
    Diango migrate遇到问题
    pip安装ujson报错: error:Microsoft Visual C++ 14.0 is required
    vue watch监听新增属性
    git commit message规范与约束(全局安装)
    git commit message规范与约束(项目内安装)
    pip常用方法
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13448183.html
Copyright © 2020-2023  润新知