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的一些用法分享
Oct 07 Python
python实现给字典添加条目的方法
Sep 25 Python
Python中使用select模块实现非阻塞的IO
Feb 03 Python
在Python的Django框架中实现Hacker News的一些功能
Apr 17 Python
Python查询阿里巴巴关键字排名的方法
Jul 08 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
Apr 27 Python
对python多线程SSH登录并发脚本详解
Feb 14 Python
详解Python静态网页爬取获取高清壁纸
Apr 23 Python
深入了解如何基于Python读写Kafka
Dec 31 Python
python利用JMeter测试Tornado的多线程
Jan 12 Python
python实现跨年表白神器--你值得拥有
Jan 04 Python
如何用 Python 处理不平衡数据集
Jan 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
解决phpmyadmin中缺少mysqli扩展问题的方法
2013/05/06 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
PHP微信支付开发实例
2016/06/22 PHP
smarty模板数学运算示例
2016/12/11 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
为jQuery增加join方法的实现代码
2010/11/28 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
用JavaScript实现类似于ListBox功能示例代码
2014/03/09 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
js实现浏览器倒计时跳转页面效果
2016/08/12 Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
2017/02/21 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
js图片上传的封装代码
2017/08/01 Javascript
vue-quill-editor实现图片上传功能
2017/08/08 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
2018/04/20 jQuery
微信小程序之下拉列表实现方法解析(附完整源码)
2019/08/23 Javascript
python任务调度实例分析
2015/05/19 Python
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
详解基于python-django框架的支付宝支付案例
2019/09/23 Python
python 爬虫 实现增量去重和定时爬取实例
2020/02/28 Python
Python库安装速度过慢解决方案
2020/07/14 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
英语道歉信范文
2014/01/09 职场文书
年度考核评语
2014/01/19 职场文书
《美丽的黄昏》教学反思
2014/02/28 职场文书
岗位职责风险点
2014/03/12 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
学校工作推荐信范文
2014/07/11 职场文书
公司员工离职证明书
2014/10/04 职场文书
计算机实训报告范文
2014/11/05 职场文书
教你怎么用Python实现GIF动图的提取及合成
2021/06/15 Python
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python