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实现的可以拷贝或剪切一个文件列表中的所有文件
Apr 30 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
Jan 23 Python
python实现朴素贝叶斯算法
Nov 19 Python
Django集成CAS单点登录的方法示例
Jun 10 Python
PyQt5下拉式复选框QComboCheckBox的实例
Jun 25 Python
python如何解析配置文件并应用到项目中
Jun 27 Python
python 实现视频 图像帧提取
Dec 10 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
Dec 31 Python
Pandas时间序列:时期(period)及其算术运算详解
Feb 25 Python
python turtle绘图命令及案例
Nov 23 Python
python使用BeautifulSoup 解析HTML
Apr 24 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
使用php重新实现PHP脚本引擎内置函数
2007/03/06 PHP
php提交post数组参数实例分析
2015/12/17 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
Symfony2学习笔记之控制器用法详解
2016/03/17 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
2016/03/18 PHP
PHP实现的限制IP投票程序IP来源分析
2016/05/04 PHP
验证坐标在某坐标区域内php代码
2016/10/08 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
jquery win 7透明弹出层效果的简单代码
2013/08/06 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
JavaScript中的类与实例实现方法
2015/01/23 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
2016/12/14 Javascript
jQuery EasyUI ProgressBar进度条组件
2017/02/28 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
vue全局使用axios的方法实例详解
2018/11/22 Javascript
Django接受前端数据的几种方法总结
2016/11/04 Python
使用python为mysql实现restful接口
2018/01/05 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
Python操作mongodb的9个步骤
2018/06/04 Python
tensorflow模型保存、加载之变量重命名实例
2020/01/21 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
三星印度官网:Samsung印度
2019/08/03 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
信息系统专业个人求职信范文
2013/12/07 职场文书
学习保证书怎么写
2015/02/26 职场文书
婚礼答谢词范文
2015/09/29 职场文书
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript