Python无头爬虫下载文件的实现


Posted in Python onApril 02, 2020

有些页面并不能直接用requests获取到内容,会动态执行一些js代码生成内容。这个文章主要是对付那些特殊页面的,比如必须要进行js调用才能下载的情况。

安装chrome

wget [https://dl.google.com/linux/direct/google-chrome-stable\_current\_x86\_64.rpm](https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm)
yum install ./google-chrome-stable\_current\_x86\_64.rpm
yum install mesa-libOSMesa-devel gnu-free-sans-fonts wqy-zenhei-fonts

安装chromedriver

淘宝源(推荐)  

wget http://npm.taobao.org/mirrors/chromedriver/2.41/chromedriver_linux64.zip
unzip chromedriver\_linux64.zip
move chromedriver /usr/bin/
chmod +x /usr/bin/chromedriver

感谢这篇博客

上述步骤可以选择适合自己的版本下载,注意:chrome和chrome driver必须是匹配的版本,chrome driver会备注支持的chrome版本号。

实战操作

需要引入的库

from selenium import webdriver
from time import sleep
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import NoSuchElementException

chrome启动设置

chrome_options = Options()
chrome_options.add_argument('--no-sandbox')#解决DevToolsActivePort文件不存在的报错
chrome_options.add_argument('window-size=1920x3000') #指定浏览器分辨率
chrome_options.add_argument('--disable-gpu') #谷歌文档提到需要加上这个属性来规避bug
chrome_options.add_argument('--hide-scrollbars') #隐藏滚动条, 应对一些特殊页面
chrome_options.add_argument('blink-settings=imagesEnabled=false') #不加载图片, 提升速度
chrome_options.add_argument('--headless') #浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败

同样感谢上面的博客

设置额外参数,比如下载不弹窗和默认下载路径

prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory': './filelist'}
chrome_options.add_experimental_option('prefs', prefs)

初始化驱动

cls.driver=webdriver.Chrome(options=chrome_options)

退出驱动

cls.driver.quit()

请求一个url

cls.driver.get(url)

执行指定js代码

cls.driver.execute_script('console.log("helloworld")')

查找指定元素

subtitle = cls.driver.find_element_by_class_name("fubiaoti").text

到此这篇关于Python无头爬虫下载文件的实现的文章就介绍到这了,更多相关Python无头爬虫下载文件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用Python编写简单网络爬虫抓取视频下载资源
Nov 04 Python
详解Python中的多线程编程
Apr 09 Python
详解python中asyncio模块
Mar 03 Python
使用python根据端口号关闭进程的方法
Nov 06 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
Jun 19 Python
python3实现猜数字游戏
Dec 07 Python
Python多叉树的构造及取出节点数据(treelib)的方法
Aug 09 Python
pytorch 模拟关系拟合——回归实例
Jan 14 Python
Django中的模型类设计及展示示例详解
May 29 Python
一文解决django 2.2与mysql兼容性问题
Jul 15 Python
Python容器类型公共方法总结
Aug 19 Python
python 用Matplotlib作图中有多个Y轴
Nov 28 Python
linux 下selenium chrome使用详解
Apr 02 #Python
Python HTTP下载文件并显示下载进度条功能的实现
Apr 02 #Python
python实现将range()函数生成的数字存储在一个列表中
Apr 02 #Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 #Python
python求前n个阶乘的和实例
Apr 02 #Python
python实现将字符串中的数字提取出来然后求和
Apr 02 #Python
python对指定字符串逆序的6种方法(小结)
Apr 02 #Python
You might like
实用函数3
2007/11/08 PHP
php ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
PHP四舍五入精确小数位及取整
2014/01/14 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
详解AngularJS1.x学习directive 中‘& ’‘=’ ‘@’符号的区别使用
2017/08/23 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
VUE长按事件需求详解
2017/10/18 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
微信小程序自定义select下拉选项框组件的实现代码
2018/08/28 Javascript
详解Angular6学习笔记之主从组件
2018/09/05 Javascript
vue 的点击事件获取当前点击的元素方法
2018/09/15 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
Python实现扫描局域网活动ip(扫描在线电脑)
2015/04/28 Python
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
详解Python的Lambda函数与排序
2016/10/25 Python
Python 编码Basic Auth使用方法简单实例
2017/05/25 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
python面试题之列表声明实例分析
2019/07/08 Python
python中update的基本使用方法详解
2019/07/17 Python
Visual Studio Code搭建django项目的方法步骤
2020/09/17 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
小程序瀑布流解决左右两边高度差距过大的问题
2019/02/20 HTML / CSS
俄罗斯香水和化妆品网上商店:NOTINO.ru
2019/12/17 全球购物
小学优秀班干部事迹材料
2014/05/25 职场文书
土木工程求职信
2014/05/29 职场文书
教师批评与自我批评总结
2014/10/16 职场文书
单身申明具结书
2015/02/26 职场文书