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对字典进行排序实例
Sep 25 Python
Python中asyncore异步模块的用法及实现httpclient的实例
Jun 28 Python
基于Python代码编辑器的选用(详解)
Sep 13 Python
Python实现修改文件内容的方法分析
Mar 25 Python
Sanic框架Cookies操作示例
Jul 17 Python
浅谈python写入大量文件的问题
Nov 09 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
Dec 21 Python
如何在Django中设置定时任务的方法示例
Jan 18 Python
用sqlalchemy构建Django连接池的实例
Aug 29 Python
python使用HTMLTestRunner导出饼图分析报告的方法
Dec 30 Python
详解python itertools功能
Feb 07 Python
pandas DataFrame.shift()函数的具体使用
May 24 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
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
PHP中数组转换为SimpleXML教程
2019/01/27 PHP
解决Laravel 不能创建 migration 的问题
2019/10/09 PHP
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
JavaScript 利用StringBuffer类提升+=拼接字符串效率
2009/11/24 Javascript
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
layer实现弹窗提交信息
2016/12/12 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
Python3实现生成随机密码的方法
2014/08/23 Python
用Python操作字符串之rindex()方法的使用
2015/05/19 Python
基于python yield机制的异步操作同步化编程模型
2016/03/18 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
python实现监控阿里云账户余额功能
2019/12/16 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
GafasWorld哥伦比亚:网上购买眼镜
2017/11/28 全球购物
美国购买肉、鸭、家禽、鹅肝和熟食网站:D’Artagnan
2018/11/13 全球购物
幼儿园教师考核制度
2014/02/01 职场文书
情况说明书格式范文
2014/05/06 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
运动会报道稿300字
2014/10/02 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
结婚典礼致辞
2015/07/28 职场文书
公司管理制度范本
2015/08/03 职场文书
golang中的并发和并行
2021/05/08 Golang
pytorch常用数据类型所占字节数对照表一览
2021/05/17 Python
使用Django实现商城验证码模块的方法
2021/06/01 Python
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android