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进行动态爬虫相关推荐

  1. python提高照片分辨率_如何在python中提高图像的分辨率一个可能的解决方案?

    我有一个有趣的想法,通过在网格中复制每个像素9次来提高图像的分辨率.所以,我继续使用Pillow库在python中实现了它.在 这里的问题是图像没有比之前的图像更清晰或分辨率更高.它看起来仍然像先前图 ...

  2. python绝对导入_[编程基础] Python中的绝对导入与相对导入

    如果您从事的Python项目有多个文件,那么您以前可能不得不使用import语句.即使对于拥有多个项目的Python重度使用者(比如我),import也可能会造成混淆!您可能正在阅读本文,因为您想对P ...

  3. 笨办法学Python(第四版)最新版+Python爬虫开发与项目实战+Python网络数据采集+精通Scrapy网络爬虫

    笨办法学Python(第四版)最新版+Python爬虫开发与项目实战+Python网络数据采集+精通Scrapy网络爬虫 本资料为最新整理高清带目录pdf,百度网盘下载~~~ 本资料为最新整理高清带目 ...

  4. python中的变量是动态类型的什么意思_Python零基础入门(一):对Python的简单认识...

    点击蓝字 关注浅韵 一起划水 写在前面 期末考试告一段落之后,这个公众号又活了. 漫长的假期,想玩也是肯定的,但是发现自己想学的东西也很多,想写的东西也很多,所以给自己来了一个假期整活计划. 在这个假 ...

  5. python 编程效率_五个Python编程Tips,帮你提高编码效率

    无论你是一位高级的AI工程师还是学生,你都会在工作或学习过程中需要用到 Python.自 1991 年首次发布后,Python 很快就成为了程序员和技术人员最喜欢的语言.作为一种拥有相对简单语法的高级 ...

  6. python获取实时基金数据由银河证券提供_我用Python写了个金融数据爬虫,半小时干了组里实习生一周的工作量...

    原标题:我用Python写了个金融数据爬虫,半小时干了组里实习生一周的工作量 最近,越来越多的研究员.基金经理甚至财务会计领域的朋友,向小编咨询:金融人需要学Python么? 事实上在2019年,这已 ...

  7. python如何初始化对象数组_如何理解Python中的面向对象编程?

    (由Python大本营付费下载自视觉中国) 作者 | Radek Fabisiak 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 现如今面向对象编程的使用非常广泛,本文 ...

  8. python编辑器编程猫_编程猫Python编辑器 Mac版0.4.0 下载 - 51下载网

    Tags: 编程工具 51下载网提供Python编辑器<编程猫Python编辑器 Mac版>0.4.0 下载,该软件为免费软件,文件大小为55.2 MB,推荐指数3颗星,作为国产软件中的顶 ...

  9. python爬虫天天基金_不使用Python爬虫框架,多线程+代理池爬取天天基金网、股票数据...

    提到爬虫,大部分人都会想到使用Scrapy工具,但是仅仅停留在会使用的阶段.为了增加对爬虫机制的理解,我们可以手动实现多线程的爬虫过程,同时,引入IP代理池进行基本的反爬操作. 本次使用天天基金网进行 ...

最新文章

  1. BZOJ4475: [Jsoi2015]子集选取【找规律】【数学】
  2. 计算机网络与通信这门课难不难,【知乎】计算机网络这门课为何如此之难
  3. asp.net三层架构连接Oracle 11g详解
  4. b g opencv读入的图片 r_OpenCV提取显示一张图片(或者视频)的R,G,B颜色分量
  5. c语言休眠函数useconds类型,带你了解C语言中的Sleep函数(附代码)
  6. 人工蜂群算法python_教程 | 用人工蜂群算法求解k-分区聚类问题
  7. PHP多线程(Pthread初探)
  8. 移动端web自适应解决方案: adaptive.js
  9. centos添加普通用户
  10. python课程第三周小结_python周报第三周
  11. BAT54C那些事儿
  12. Android Studio 下载安装教程
  13. 西门子PLC是怎么控制伺服电机的?
  14. 用3Ds Max做三维场景建模
  15. 数据库实验2 数据库安全性定义与检查
  16. 无法连接到mysql数据库_无法连接到数据库服务器(mysql workbench)
  17. 关于在js中使用trim函数的一些小技巧
  18. NGUI动态字体的制作
  19. 哲学家就餐(linux多线程)
  20. 不权威的国产CPU发展历程

热门文章

  1. 计算机三级会保研加分吗,366所高校有保研资格,除了对成绩有要求外,还有哪些要求?...
  2. checkbox保存和赋值
  3. Web前端学习笔记:Bootstrap
  4. 02-合并frame
  5. java.lang.IllegalStateException: Not connected to server
  6. Xml文档添加节点和属性
  7. TCP传输过程中丢包问题
  8. ajax 五种状态,ajax的五种状态
  9. cloudstack java api_CloudStack API编程指引
  10. Web框架——Flask系列之abort函数与自定义异常处理(十三)