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.x与Python3.x版本的代码的几个示例
Mar 30 Python
python字典排序实例详解
May 20 Python
python3实现暴力穷举博客园密码
Jun 19 Python
Python爬虫实现全国失信被执行人名单查询功能示例
May 03 Python
Python爬虫获取图片并下载保存至本地的实例
Jun 01 Python
Python实现SQL注入检测插件实例代码
Feb 02 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
Sep 16 Python
python实现飞船大战
Apr 24 Python
django haystack实现全文检索的示例代码
Jun 24 Python
PyTorch预训练Bert模型的示例
Nov 17 Python
Python函数调用追踪实现代码
Nov 27 Python
解决TensorFlow训练模型及保存数量限制的问题
Mar 03 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 str_pad 函数使用详解
2009/01/13 PHP
php变量范围介绍
2012/10/15 PHP
19个Android常用工具类汇总
2014/12/30 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
2016/08/01 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
php版微信公众号接口实现发红包的方法
2016/10/14 PHP
PHP实现的策略模式简单示例
2017/08/25 PHP
解析window.open的使用方法总结
2013/06/19 Javascript
flash遮住div问题的正确解决方法
2014/02/27 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
js分页代码分享
2014/04/28 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
JS中封装axios来管控api的2种方式
2019/09/11 Javascript
微信小程序实现点赞业务
2021/02/10 Javascript
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
Python发送以整个文件夹的内容为附件的邮件的教程
2015/05/06 Python
Python识别处理照片中的条形码
2020/11/16 Python
python中_del_还原数据的方法
2020/12/09 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
2021/01/09 Python
VSCode 自定义html5模板的实现
2019/12/05 HTML / CSS
曼城官方网上商店:Manchester City
2019/09/10 全球购物
小学生红领巾广播稿
2014/01/21 职场文书
红旗方阵解说词
2014/02/12 职场文书
《秋姑娘的信》教学反思
2014/02/28 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
上班时间打瞌睡检讨书
2014/09/26 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
小学生组织委员竞选稿
2015/11/21 职场文书
导游词之南京栖霞山
2019/10/18 职场文书
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers