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 相关文章推荐
python2.7到3.x迁移指南
Feb 01 Python
python实现Decorator模式实例代码
Feb 09 Python
python购物车程序简单代码
Apr 18 Python
python中copy()与deepcopy()的区别小结
Aug 03 Python
django query模块
Apr 20 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
Python初学者常见错误详解
Jul 02 Python
python线程安全及多进程多线程实现方法详解
Sep 27 Python
Centos7 下安装最新的python3.8
Oct 28 Python
python nohup 实现远程运行不宕机操作
Apr 16 Python
python matplotlib实现将图例放在图外
Apr 17 Python
Python os和os.path模块详情
Apr 02 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实现批量修改文件后缀名的方法
2015/07/30 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
Javascript miscellanea -display data real time, using window.status
2007/01/09 Javascript
DOM 基本方法
2009/07/18 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
jQuery向后台传入json格式数据的方法
2015/02/13 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
js实现固定显示区域内自动缩放图片的方法
2015/07/18 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
JS中多层次排序算法的实现代码
2021/01/06 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
Python批量修改文件后缀的方法
2014/01/26 Python
python实现textrank关键词提取
2018/06/22 Python
python八皇后问题的解决方法
2018/09/27 Python
python找出完数的方法
2018/11/12 Python
Python flask框架post接口调用示例
2019/07/03 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
2019/08/01 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
python中os.remove()用法及注意事项
2021/01/31 Python
澳大利亚儿童和婴儿产品在线商店:Lime Tree Kids
2017/10/05 全球购物
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
世界上最大的艺术社区:SAA
2020/12/30 全球购物
出生医学证明书
2014/09/15 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
环卫工作个人总结
2015/03/04 职场文书
房地产公司财务总监岗位职责
2015/04/03 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python