Python爬取javascript(js)动态网页
转自:自由爸爸,iceblue iceblue,王阳阳
详细内容请参考:Selenium-Python中文文档
python有许多库可以让我们很方便地编写网络爬虫,爬取某些页面,获得有价值的信息!但许多时候,爬虫取到的页面仅仅是一个静态的页面,即网页 的源代码,就像在浏览器上的“查看网页源代码”一样。一些动态的东西如javascript脚本执行后所产生的信息,是抓取不到的,这里暂且先给出这么一 些方案,可用于python爬取js执行后输出的信息。
1. 两种基本的解决方案
1.1 用dryscrape库动态抓取页面
js脚本是通过浏览器来执行并返回信息的,所以,抓取js执行后的页面,一个最直接的方式就是用python模拟浏览器的行为。WebKit 是一个开源的浏览器引擎,python提供了许多库可以调用这个引擎,dryscrape便是其中之一,它调用webkit引擎来处理包含js等的网页!
1 import dryscrape 2 # 使用dryscrape库 动态抓取页面 3 def get_url_dynamic(url): 4 session_req=dryscrape.Session() 5 session_req.visit(url) #请求页面 6 response=session_req.body() #网页的文本 7 #print(response) 8 return response 9 get_text_line(get_url_dynamic(url)) #将输出一条文本
这里对于其余包含js的网页也是适用的!虽然可以满足抓取动态页面的要求,但缺点还是很明显的:慢!太慢了,其实想一想也合理,python调用 webkit请求页面,而且等页面加载完,载入js文件,让js执行,将执行后的页面返回,慢一点也是应该的!除外还有很多库可以调用 webkit:PythonWebkit,PyWebKitGit,Pygt(可以用它写个浏览器),pyjamas等等,听说它们也可以实现相同的功 能!
1.2 selenium web测试框架
selenium是一个web测试框架,它允许调用本地的浏览器引擎发送网页请求,所以,它同样可以实现抓取页面的要求。
# 使用 selenium webdriver 可行,但会实时打开浏览器窗口
1 def get_url_dynamic2(url): 2 driver=webdriver.Firefox() #调用本地的火狐浏览器,Chrom 甚至 Ie 也可以的 3 driver.get(url) #请求页面,会打开一个浏览器窗口 4 html_text=driver.page_source 5 driver.quit() 6 #print html_text 7 return html_text 8 get_text_line(get_url_dynamic2(url)) #将输出一条文本
这也不失为一条临时的解决方案!与selenium类似的框架还有一个windmill,感觉稍复杂一些,就不再赘述!
2. selenium的安装与使用
2.1 selenium的安装
在Ubuntu上安装可以直接使用pip install selenium。由于以下原因:
2. firefox 47以上版本,需要下载第三方driver,即geckodriver
2. 解压后将geckodriverckod 存放至 /usr/local/bin/ 路径下即可:sudo mv ~/Downloads/geckodriver /usr/local/bin/
2.2 selenium的使用
1. 运行报错:
driver = webdriver.chrome()
TypeError: 'module' object is not callable
解决方案:浏览器的名称需要大写Chrome和Firefox,Ie
2. 通过
1 content = driver.find_element_by_class_name('content')
来定位元素时,该方法返回的是FirefoxWebElement,想要获取包含的值时,可以通过
1 value = content.text
转载于:https://www.cnblogs.com/taolusi/p/9282565.html
Python爬取javascript(js)动态网页相关推荐
- python爬取js_Python爬取javascript(js)动态网页
python有许多库可以让我们很方便地编写网络爬虫,爬取某些页面,获得有价值的信息!但许多时候,爬虫取到的页面仅仅是一个静态的页面,即网页 的源代码,就像在浏览器上的"查看网页源代码&quo ...
- Java+Selenium爬取JavaScript返回的网页数据
案例:本文主要描述如何根据快递单号使用Java+Selenium爬取"爱查快递网页"快递的跟踪信息并按照设计的数据格式返回数据 解决问题:爬取JavaScript返回的网页数据(网 ...
- python爬取B站动态的评论总数(不含用户评论内容详情)
目录 前言 需求 方案分析 方案一 方案二 接口分析 请求流程 抓包演示 请求接口 接口说明 接口测试 代码 前言 想看接口分析和代码的,可跳过前言. 更新,最核心的代码已删除,思路和其他代码保留. ...
- Python爬取西刺代理网页
爬取西刺代理网页的信息,并保存到本地的TXT文本或者mysql数据库中 本文只做爬取网页的练习 代码如下: import requests from lxml import etree import ...
- 照葫芦画瓢之python爬虫系列----(2)初次爬取简单的动态网页数据(网易、QQ音乐排行榜)
感谢提供素材的同学,无论好坏,高低,我都真心佩服你:参考文章地址:https://mp.weixin.qq.com/s/AXr8BjR_tU-E9YBo-mLVlg 爬取网易云音乐榜单 在上一篇的文章 ...
- python爬取猫眼遇到动态字体反爬
前一段时间,爬取了58同城,发现当时的网页对数字有字体反爬虫,然后废了九牛二虎之力找到了规律,终于破解了反爬虫,后来发现猫眼的这个网页虽然使用了字体反爬,但是和原来的58同城还是有很大的差别,后来了解 ...
- python爬虫网页图片显示不出来_用Python爬取20万条网页美女图片,两只眼睛 都看不过来了!...
前言 最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: Python 3.6官网下载 本地下载 我们这里以sogou作为爬取的对象. 首先 ...
- python 爬取静态 静态 静态网页
该文章是我在练习基础是写的一个小项目,爬取的是一个网站的图片(妹子才是学习的动力).其中用到了线程和xpath等知识的应用,属于小白入门篇,各位大佬要是在浏览过程中发现可以优化的地方尽情留言,先给各位 ...
- python爬取数据总结_2020-10-23Python——网页数据爬取知识总结
一.爬虫请求方法 1.模块名:urllib.resquest 2.导入的方式: import urllib.resquest from urllib import request 3.使用的方法 re ...
- python爬取javascript变量数据_javascript - [新手]python爬虫爬取中证指数官网数据
问 题 想用python爬虫获取中证指数官网上的几个主要指数的每日估值更新,但是下载下来的页面内容却没有想要的数据.想要的数据前面有个JavaScript标签,是不是光靠python没办法获取这个数据 ...
最新文章
- boost::safe_numerics模块实现隐式转换更改数据值的测试程序
- 信息学奥赛一本通 1029:计算浮点数相除的余 | OpenJudge NOI 1.3 11
- vs 2005應用2003框架
- git revert与git reset
- 汉代以前,鸳鸯是形容兄弟感情的,后来演变为男女感情
- 程序语言POJ 2406 Power Strings
- 阻抗匹配四参数:反射系数、行波系数、驻波比、回波损耗
- 关于计算机组装与维护的论文,计算机组装与维护论文范文
- CortexM3/M4(3)-指令集
- App开发者如何选择移动广告平台1 - 开发者规模分析
- 我希望逢着一个丁香一样地结着愁怨的姑娘
- 【排序算法】图解直接插入排序(图解堪比Debug显示每次循环结果)
- 新闻页面数据分页and添加新闻评论
- Spring DI 概述
- 计算机视觉(东北大学)慕课参考答案
- 解决pdf打印预览中遇到特殊字符,导出失败问题
- pfam的使用-自用
- 6-RabbitMQ实战
- 【软件测试】测试的天花板?资深测试怎么一路爬的......
- Netty 实现高并发通讯原理理解
热门文章
- TeaVM的samples/benchmark范例运行办法
- 解决办法:syslinux:Accessing physical drive
- 百度网盘也能BT下载ED2K
- LINUX查询版本情况
- 平时多流汗,战时少流血
- 吾有个怪习惯:看书时经常把ABC结构的词看成ACB
- VC++字符串类型转换
- android notify,android4.0 MediaPlayer的notify监听机制的全面剖析
- php生成excel完整实例代码,PHP输出Excel实例代码
- phython在file同时写入两个_Python实现读取excel写入mysql的小工具详解