pythonselenium提高爬虫效率_[编程经验] Python中使用selenium进行动态爬虫
Hello,大家好!停更了这么久,中间发生了很多事情,我的心情也发生了很大的变化,看着每天在增长的粉丝,实在不想就这么放弃了,所以以后我会尽量保持在一周一篇的进度,与大家分享我的学习点滴,希望大家可以继续支持我,我会努力滴!
selenium是一个前端的自动化测试工具,一般不推荐作为爬虫工具,但是为啥我还要给大家说用来做爬虫呢,因为他确实可以用来爬虫,并且思路很直观,原理比较清晰。
1. 安装
selenium安装比较简单,直接用pip就可以安装,打开cmd,输入
pip install selenium
就好了
2. 安装chromedriver
chromedriver是谷歌浏览器的驱动程序,因为我平时用chrome,所以这里只介绍chromedriver。
下载地址:
http://chromedriver.storage.googleapis.com/index.html
这里需要注意的是,chromedriver的版本需要是你安装的Chrome的版本对应起来,Chrome的版本可以在浏览器的右上角找到帮助-关于Google Chrome 查看浏览器的版本。具体的对应规则如下:
chromedriver版本
支持的Chrome版本
v2.40
v66-68
v2.39
v66-68
v2.38
v65-67
v2.37
v64-66
v2.36
v63-65
v2.35
v62-64
v2.34
v61-63
v2.33
v60-62
v2.32
v59-61
v2.31
v58-60
v2.30
v58-60
v2.29
v56-58
v2.28
v55-57
v2.27
v54-56
v2.26
v53-55
v2.25
v53-55
v2.24
v52-54
v2.23
v51-53
v2.22
v49-52
安装完之后,把驱动的安装目录添加到系统Path中就好了,如果不添加,在运行程序的时候就会报错,提示你没有添加到Path中。
3. 开始爬虫
今天要爬取的网址是:https://www.upbit.com/service_center/notice,然后点击翻页按钮,发现url并没有变化,通过F12查看请求的地址变化,可以发现,
https://www.upbit.com/service_center/notice?id=1
这里主要变化的就是后面的id,1,2,3,。。。依次类推。
用selenium爬虫开始前,需要定义好下面内容
# 设置谷歌浏览器的选项,opt = webdriver.ChromeOptions()
# 将浏览器设置为无头浏览器,即先爬虫时,没有显示的浏览器opt.set_headless()
# 浏览器设置为谷歌浏览器,并设置为上面设置的选项browser = webdriver.Chrome(options=opt)
save = []
home = 'https://www.upbit.com/home'# 创建好浏览器对象后,通过get()方法可以向浏览器发送网址,
# 获取网址信息browser.get(home)
time.sleep(15)
然后是如何定位html的元素,在selenium中,定位元素的方法有
find_element_by_id(self, id_)find_element_by_name(self, name)find_element_by_class_name(self, name)find_element_by_tag_name(self, name)find_element_by_link_text(self, link_text)find_element_by_partial_link_text(self, link_text)find_element_by_xpath(self, xpath)find_element_by_css_selector(self, css_selector)
其中的id,name等都可以通过浏览器获得,定位元素的目的是为了获取我们想要的信息,然后解析出来保存,通过调用tex方法可以获得元素的文本信息。
下面把整个爬虫的代码,贴出来,供大家参考
fromselenium importwebdriver
importtime
fromtqdm importtrange
fromcollections importOrderedDict
importpandas aspd
defstringpro(inputs):
inputs = str(inputs)
returninputs.strip().replace("\n","").replace("\t","").lstrip().rstrip()
opt = webdriver.ChromeOptions()
opt.set_headless()
browser = webdriver.Chrome(options=opt)
save = []
home = 'https://www.upbit.com/home'browser.get(home)
time.sleep(15)
forpage intrange(500):
try:
rows = OrderedDict()
url = "https://www.upbit.com/"\
"service_center/notice?id={}".format(page)
browser.get(url)
content = browser.find_element_by_class_name(
name='txtB').text
title_class = browser.find_element_by_class_name(
name='titB')
title = title_class.find_element_by_tag_name(
'strong').text
times_str = title_class.find_element_by_tag_name(
'span').text
times = times_str.split('|')[0].split(" ")[1:]
num = times_str.split("|")[1].split(" ")[1]
rows['title'] = title
rows['times'] = " ".join(times)
rows['num'] = num
rows['content'] = stringpro(content)
save.append(rows)
print("{},{}".format(page,rows))
exceptExceptionase:
continuedf = pd.DataFrame(save)
df.to_csv("./datasets/www_upbit_com.csv",index=None)
有问题可以与我交流~
pythonselenium提高爬虫效率_[编程经验] Python中使用selenium进行动态爬虫相关推荐
- python提高照片分辨率_如何在python中提高图像的分辨率一个可能的解决方案?
我有一个有趣的想法,通过在网格中复制每个像素9次来提高图像的分辨率.所以,我继续使用Pillow库在python中实现了它.在 这里的问题是图像没有比之前的图像更清晰或分辨率更高.它看起来仍然像先前图 ...
- python绝对导入_[编程基础] Python中的绝对导入与相对导入
如果您从事的Python项目有多个文件,那么您以前可能不得不使用import语句.即使对于拥有多个项目的Python重度使用者(比如我),import也可能会造成混淆!您可能正在阅读本文,因为您想对P ...
- 笨办法学Python(第四版)最新版+Python爬虫开发与项目实战+Python网络数据采集+精通Scrapy网络爬虫
笨办法学Python(第四版)最新版+Python爬虫开发与项目实战+Python网络数据采集+精通Scrapy网络爬虫 本资料为最新整理高清带目录pdf,百度网盘下载~~~ 本资料为最新整理高清带目 ...
- python中的变量是动态类型的什么意思_Python零基础入门(一):对Python的简单认识...
点击蓝字 关注浅韵 一起划水 写在前面 期末考试告一段落之后,这个公众号又活了. 漫长的假期,想玩也是肯定的,但是发现自己想学的东西也很多,想写的东西也很多,所以给自己来了一个假期整活计划. 在这个假 ...
- python 编程效率_五个Python编程Tips,帮你提高编码效率
无论你是一位高级的AI工程师还是学生,你都会在工作或学习过程中需要用到 Python.自 1991 年首次发布后,Python 很快就成为了程序员和技术人员最喜欢的语言.作为一种拥有相对简单语法的高级 ...
- python获取实时基金数据由银河证券提供_我用Python写了个金融数据爬虫,半小时干了组里实习生一周的工作量...
原标题:我用Python写了个金融数据爬虫,半小时干了组里实习生一周的工作量 最近,越来越多的研究员.基金经理甚至财务会计领域的朋友,向小编咨询:金融人需要学Python么? 事实上在2019年,这已 ...
- python如何初始化对象数组_如何理解Python中的面向对象编程?
(由Python大本营付费下载自视觉中国) 作者 | Radek Fabisiak 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 现如今面向对象编程的使用非常广泛,本文 ...
- python编辑器编程猫_编程猫Python编辑器 Mac版0.4.0 下载 - 51下载网
Tags: 编程工具 51下载网提供Python编辑器<编程猫Python编辑器 Mac版>0.4.0 下载,该软件为免费软件,文件大小为55.2 MB,推荐指数3颗星,作为国产软件中的顶 ...
- python爬虫天天基金_不使用Python爬虫框架,多线程+代理池爬取天天基金网、股票数据...
提到爬虫,大部分人都会想到使用Scrapy工具,但是仅仅停留在会使用的阶段.为了增加对爬虫机制的理解,我们可以手动实现多线程的爬虫过程,同时,引入IP代理池进行基本的反爬操作. 本次使用天天基金网进行 ...
最新文章
- BZOJ4475: [Jsoi2015]子集选取【找规律】【数学】
- 计算机网络与通信这门课难不难,【知乎】计算机网络这门课为何如此之难
- asp.net三层架构连接Oracle 11g详解
- b g opencv读入的图片 r_OpenCV提取显示一张图片(或者视频)的R,G,B颜色分量
- c语言休眠函数useconds类型,带你了解C语言中的Sleep函数(附代码)
- 人工蜂群算法python_教程 | 用人工蜂群算法求解k-分区聚类问题
- PHP多线程(Pthread初探)
- 移动端web自适应解决方案: adaptive.js
- centos添加普通用户
- python课程第三周小结_python周报第三周
- BAT54C那些事儿
- Android Studio 下载安装教程
- 西门子PLC是怎么控制伺服电机的?
- 用3Ds Max做三维场景建模
- 数据库实验2 数据库安全性定义与检查
- 无法连接到mysql数据库_无法连接到数据库服务器(mysql workbench)
- 关于在js中使用trim函数的一些小技巧
- NGUI动态字体的制作
- 哲学家就餐(linux多线程)
- 不权威的国产CPU发展历程
热门文章
- 计算机三级会保研加分吗,366所高校有保研资格,除了对成绩有要求外,还有哪些要求?...
- checkbox保存和赋值
- Web前端学习笔记:Bootstrap
- 02-合并frame
- java.lang.IllegalStateException: Not connected to server
- Xml文档添加节点和属性
- TCP传输过程中丢包问题
- ajax 五种状态,ajax的五种状态
- cloudstack java api_CloudStack API编程指引
- Web框架——Flask系列之abort函数与自定义异常处理(十三)