zoukankan      html  css  js  c++  java
  • Python3抓取javascript生成的html网页

    用urllib等抓取网页,只能读取网页的静态源文件,而抓不到由javascript生成的内容。

    究其原因,是因为urllib是瞬时抓取,它不会等javascript的加载延迟,所以页面中由javascript生成的内容,urllib读取不到。

    那由javascript生成的内容就真的没有办法读取了吗?非也!

    本文要介绍一个python库:selenium,目前最新版本是 2.44.0

    先安装:

    pip install -U selenium

    下面用三个例子来说明其用法:

    【例0】

    • 打开一个Firefox浏览器
    • 载入所给url地址的页面
    1 from selenium import webdriver
    2 
    3 browser = webdriver.Firefox()
    4 browser.get('http://www.baidu.com/')

    【例1】

    • 打开一个Firefox浏览器
    • 载入百度主页
    • 搜索 “seleniumhq”
    • 关闭浏览器
     1 from selenium import webdriver
     2 from selenium.webdriver.common.keys import Keys
     3 
     4 browser = webdriver.Firefox()
     5 
     6 browser.get('http://www.baidu.com')
     7 assert '百度' in browser.title
     8 
     9 elem = browser.find_element_by_name('p')  # Find the search box
    10 elem.send_keys('seleniumhq' + Keys.RETURN)  # 模拟按键
    11 
    12 browser.quit()

    【例2】

    Selenium WebDriver 常用于网络程序的测试。 下面是一个使用Python标准库 unittest 的例子:

     1 import unittest
     2 
     3 class BaiduTestCase(unittest.TestCase):
     4 
     5     def setUp(self):
     6         self.browser = webdriver.Firefox()
     7         self.addCleanup(self.browser.quit)
     8 
     9     def testPageTitle(self):
    10         self.browser.get('http://www.baidu.com')
    11         self.assertIn('百度', self.browser.title)
    12 
    13 if __name__ == '__main__':
    14     unittest.main(verbosity=2)
  • 相关阅读:
    java 网络编程
    JAVA 中for-each循环使用方法
    JAVA 常用集合接口List、Set、Map总结
    android学习计划
    ExtJs
    jQuery easyui
    MVC
    简易servlet计算器
    使用servlet实现用户注册功能
    用JavaBean实现数据库的连接和关闭,在jsp页面输出数据库中student表中学生的信息
  • 原文地址:https://www.cnblogs.com/hhh5460/p/4286983.html
Copyright © 2011-2022 走看看