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 相关文章推荐
python3.3使用tkinter开发猜数字游戏示例
Mar 14 Python
Python实现的简单发送邮件脚本分享
Nov 07 Python
python开发之IDEL(Python GUI)的使用方法图文详解
Nov 12 Python
Python iter()函数用法实例分析
Mar 17 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
Oct 16 Python
Python Pandas 箱线图的实现
Jul 23 Python
对django layer弹窗组件的使用详解
Aug 31 Python
python多维数组分位数的求取方式
Mar 03 Python
Django Auth用户认证组件实现代码
Oct 13 Python
python数据抓取3种方法总结
Feb 07 Python
pip install命令安装扩展库整理
Mar 02 Python
解决Python中的modf()函数取小数部分不准确问题
May 28 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中创建并处理图象
2006/10/09 PHP
自动跳转中英文页面
2006/10/09 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
谷歌地图打不开的解决办法
2014/08/07 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
整理关于Bootstrap列表组的慕课笔记
2017/03/29 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
2019/01/30 Javascript
vue实现图片预览组件封装与使用
2019/07/13 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
详解Vite的新体验
2021/02/22 Javascript
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
python利用lxml读写xml格式的文件
2017/08/10 Python
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
Python读写docx文件的方法
2018/05/08 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
新加坡鲜花速递/新加坡网上花店:Ferns N Petals
2020/08/29 全球购物
《爱如茉莉》教后反思
2014/04/12 职场文书
服务标语大全
2014/06/18 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
工作自我推荐信范文
2015/03/25 职场文书
搞笑结婚保证书
2015/05/08 职场文书
使用SQL实现车流量的计算的示例代码
2022/02/28 SQL Server
python自动化测试之Selenium详解
2022/03/13 Python