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中使用HTML模版的教程
Apr 29 Python
Python PyQt5实现的简易计算器功能示例
Aug 23 Python
python中列表的切片与修改知识点总结
Jul 23 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
Python手绘可视化工具cutecharts使用实例
Dec 05 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
Python类中的装饰器在当前类中的声明与调用详解
Apr 15 Python
Python定义函数实现累计求和操作
May 03 Python
5分钟快速掌握Python定时任务框架的实现
Jan 26 Python
用Python提取PDF表格的方法
Apr 11 Python
深度学习tensorflow基础mnist
Apr 14 Python
聊聊pytorch测试的时候为何要加上model.eval()
May 23 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
第十五节--Zend引擎的发展
2006/11/16 PHP
PHP的一个基础知识 表单提交
2011/07/04 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
javascript SpiderMonkey中的函数序列化如何进行
2012/12/05 Javascript
JavaScript操纵窗口的方法小结
2013/06/28 Javascript
jquery $.each 和for怎么跳出循环终止本次循环
2013/09/27 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
AngularJs Understanding the Model Component
2016/09/02 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
原生js仿淘宝网商品放大镜效果
2017/02/28 Javascript
vue 地区选择器v-distpicker的常用功能
2019/07/23 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
[01:34]DOTA2 7.22版本新增神杖效果一览(敏捷英雄篇)
2019/05/28 DOTA
Python功能键的读取方法
2015/05/28 Python
python基本语法练习实例
2017/09/19 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
python3实现小球转动抽奖小游戏
2020/04/15 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
Pytorch中.new()的作用详解
2020/02/18 Python
Python如何实现机器人聊天
2020/09/10 Python
python中count函数知识点浅析
2020/12/17 Python
雅诗兰黛旗下专业男士保养领导品牌:Lab Series
2017/05/15 全球购物
网吧收银员岗位职责
2013/12/14 职场文书
学生会招新策划书
2014/02/14 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
应聘教师自荐书
2014/06/16 职场文书
初级党校心得体会
2014/09/11 职场文书
2016年“抗战胜利纪念日”71周年校园广播稿
2015/12/18 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
乔迁新居祝福语
2019/11/04 职场文书
PHP使用QR Code生成二维码实例
2021/07/07 PHP