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中的装饰器、闭包和functools的教程
Apr 02 Python
Python中获取对象信息的方法
Apr 27 Python
浅谈python中的变量默认是什么类型
Sep 11 Python
python如何读写json数据
Mar 21 Python
Python面向对象之类和对象实例详解
Dec 10 Python
使用Python控制摄像头拍照并发邮件
Apr 23 Python
numpy下的flatten()函数用法详解
May 27 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
Jul 13 Python
python中spy++的使用超详细教程
Jan 29 Python
Spy++的使用方法及下载教程
Jan 29 Python
解决jupyter notebook图片显示模糊和保存清晰图片的操作
Apr 24 Python
Python NumPy灰度图像的压缩原理讲解
Aug 04 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类
2006/10/09 PHP
PHP安装攻略:常见问题解答(一)
2006/10/09 PHP
PHP连接MongoDB示例代码
2012/09/06 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
PHP实现的简单网络硬盘
2015/07/29 PHP
List Information About the Binary Files Used by an Application
2007/06/18 Javascript
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
2013/11/07 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
javaScript中with函数用法实例分析
2015/06/08 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
2016/01/26 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
浅谈js的html元素的父节点,子节点
2016/08/06 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
js判断在哪个浏览器打开项目的方法
2020/01/21 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
在Docker上开始部署Python应用的教程
2015/04/17 Python
Python3实现从指定路径查找文件的方法
2015/05/22 Python
Python使用wxPython实现计算器
2018/01/30 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
2020/02/20 Python
python如何快速生成时间戳
2020/07/21 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
2020/11/01 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
资金主管岗位职责范本
2014/03/04 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2014年安全保卫工作总结
2014/11/13 职场文书
母亲节寄语大全
2015/02/27 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
小学教学工作总结2015
2015/05/13 职场文书
pygame面向对象的飞行小鸟实现(Flappy bird)
2021/04/01 Python