python如何爬取动态网站


Posted in Python onSeptember 09, 2020

python有许多库可以让我们很方便地编写网络爬虫,爬取某些页面,获得有价值的信息!但许多时候,爬虫取到的页面仅仅是一个静态的页面,即网页 的源代码,就像在浏览器上的“查看网页源代码”一样。一些动态的东西如javascript脚本执行后所产生的信息,是抓取不到的,这里暂且先给出这么一 些方案,可用于python爬取js执行后输出的信息。

1、两种基本的解决方案

1.1 用dryscrape库动态抓取页面

js脚本是通过浏览器来执行并返回信息的,所以,抓取js执行后的页面,一个最直接的方式就是用python模拟浏览器的行为。WebKit 是一个开源的浏览器引擎,python提供了许多库可以调用这个引擎,dryscrape便是其中之一,它调用webkit引擎来处理包含js等的网页!

import dryscrape
# 使用dryscrape库 动态抓取页面
def get_url_dynamic(url):
    session_req=dryscrape.Session()
    session_req.visit(url) #请求页面
    response=session_req.body() #网页的文本
    #print(response)
    return response
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 可行,但会实时打开浏览器窗口

def get_url_dynamic2(url):
    driver=webdriver.Firefox() #调用本地的火狐浏览器,Chrom 甚至 Ie 也可以的
    driver.get(url) #请求页面,会打开一个浏览器窗口
    html_text=driver.page_source
    driver.quit()
    #print html_text
    return html_text
get_text_line(get_url_dynamic2(url)) #将输出一条文本

这也不失为一条临时的解决方案!与selenium类似的框架还有一个windmill,感觉稍复杂一些,就不再赘述!

2、selenium的安装与使用

2.1 selenium的安装

在Ubuntu上安装可以直接使用pip install selenium。由于以下原因:

1. selenium 3.x开始,webdriver/firefox/webdriver.py的__init__中,executable_path="geckodriver";而2.x是executable_path="wires"

2. firefox 47以上版本,需要下载第三方driver,即geckodriver

还需要一些特殊操作:

1. 下载 geckodriverckod 地址: 

mozilla/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. 通过

content = driver.find_element_by_class_name('content')

来定位元素时,该方法返回的是FirefoxWebElement,想要获取包含的值时,可以通过

value = content.text

到此这篇关于python如何爬取动态网站的文章就介绍到这了,更多相关python怎么爬动态网站内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用Python的Zato发送AMQP消息的教程
Apr 16 Python
基python实现多线程网页爬虫
Sep 06 Python
Python在图片中添加文字的两种方法
Apr 29 Python
Python判断文件和字符串编码类型的实例
Dec 21 Python
Pandas:DataFrame对象的基础操作方法
Jun 07 Python
通过pycharm使用git的步骤(图文详解)
Jun 13 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
Python 占位符的使用方法详解
Jul 10 Python
python调用支付宝支付接口流程
Aug 15 Python
python plotly画柱状图代码实例
Dec 13 Python
python psutil监控进程实例
Dec 17 Python
Python如何爬取51cto数据并存入MySQL
Aug 25 Python
python如何停止递归
Sep 09 #Python
python能做哪些生活有趣的事情
Sep 09 #Python
Python 连接 MySQL 的几种方法
Sep 09 #Python
python实现AHP算法的方法实例(层次分析法)
Sep 09 #Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
Sep 09 #Python
Python列表推导式实现代码实例
Sep 09 #Python
利用Python中的Xpath实现一个在线汇率转换器
Sep 09 #Python
You might like
PHP 飞信好友免费短信API接口开源版
2010/07/22 PHP
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
2009/05/14 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
javascript setTimeout和setInterval计时的区别详解
2013/06/21 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
jQuery基础知识点总结(DOM操作)
2016/06/01 Javascript
js操作XML文件的实现方法兼容IE与FireFox
2016/06/25 Javascript
js闭包用法实例详解
2016/12/13 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
Python使用当前时间、随机数产生一个唯一数字的方法
2017/09/18 Python
Python基于贪心算法解决背包问题示例
2017/11/27 Python
pygame实现贪吃蛇游戏(上)
2019/10/29 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
贝玲妃美国官方网站:Benefit美国
2016/08/28 全球购物
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
Unix如何在一行中运行多个命令
2015/05/29 面试题
3.12植树节活动总结2014
2014/03/13 职场文书
幼儿园大班家长评语
2014/04/17 职场文书
2014年文学毕业生自我鉴定
2014/04/23 职场文书
社会实践活动总结报告
2014/04/29 职场文书
开工仪式策划方案
2014/05/23 职场文书
电子信息工程专业自荐书
2014/06/24 职场文书
大二学生学年自我鉴定
2014/09/12 职场文书
群众路线自我剖析材料
2014/10/08 职场文书
民事辩护词范文
2015/05/21 职场文书
情人节单身感言
2015/08/03 职场文书
高中团支书竞选稿
2015/11/21 职场文书
导游词之江南周庄
2019/12/06 职场文书
详解python的异常捕获
2022/03/03 Python