案例1:斗鱼爬虫

爬取斗鱼直播平台的所有房间信息:https://www.douyu.com/directory/all

思路分析:

1.1数据的位置:
每个房间的数据都在id=live-list-contentbox的ul中。

1.2实现翻页和控制程序结束

selenium中通过点击就可以实现翻页,观察存在下一页和不存在下一页时候标签的变化
存在下一页时:

不存在下一页时:

完整代码如下:

from selenium import webdriver
import timeclass DouYu:def __init__(self):self.start_url = "https://www.douyu.com/directory/all"self.driver = webdriver.Chrome(executable_path='/home/worker/Desktop/driver/chromedriver')def get_content_list(self): #提取数据li_list = self.driver.find_elements_by_xpath("//ul[@id='live-list-contentbox']/li")content_list = []for li in li_list:item = {}item["title"] = li.find_element_by_xpath("./a").get_attribute("title")item["anchor"] = li.find_element_by_xpath(".//span[@class='dy-name ellipsis fl']").textitem["watch_num"] = li.find_element_by_xpath(".//span[@class='dy-num fr']").text# print(item)content_list.append(item)#提取下一页的元素next_url = self.driver.find_elements_by_xpath("//a[@class='shark-pager-next']")next_url = next_url[0] if len(next_url)>0 else Nonereturn content_list,next_urldef save_content_list(self,content_lsit):#保存for content in content_lsit:print(content)def run(self): #实现主要逻辑#1. start_url#2. 发送请求,获取响应self.driver.get(self.start_url)#3. 提取数据content_list,next_url = self.get_content_list()#4.保存self.save_content_list(content_list)# 5. 下一页数据的提取while next_url is not None:next_url.click() #页面没有完全加载完,会报错time.sleep(3)content_list,next_url = self.get_content_list()self.save_content_list(content_list)if __name__ == '__main__':douyu = DouYu()douyu.run()

案例2.网易云音乐爬虫

完成网易云音乐的所有列表的名字和url地址

地址:http://music.163.com/#/discover/playlist

2.1 思路分析:

  1. 确定程序入口的位置
  2. 确定首页数据的位置和url地址
  3. 实现翻页和程序停止的判断

完整代码如下:

from selenium import webdriver
import timeclass CloudMuisc():def __init__(self):self.start_url = 'http://music.163.com/#/discover/playlist'self.driver = webdriver.Chrome(executable_path='/home/worker/Desktop/driver/chromedriver')def get_content_list(self): #提取数据# 切入frame标签login_frame = self.driver.find_element_by_id('g_iframe')  # 根据id定位 frame元素self.driver.switch_to.frame(login_frame)  # 转向到该frame中li_list = self.driver.find_elements_by_xpath('//*[@id="m-pl-container"]/li')print(len(li_list))content_list = []for li in li_list:item = {}item["title"] = li.find_element_by_class_name('msk').get_attribute("title")item["href"] = li.find_element_by_xpath('.//a').get_attribute("href")# print(item)content_list.append(item)#提取下一页的元素page_url_list = self.driver.find_elements_by_xpath('.//div[@class="u-page"]/a')next_url = page_url_list[-1] if len(page_url_list)>0 else Nonereturn content_list, next_urldef save_content_list(self,content_lsit):#保存for content in content_lsit:print(content)def run(self): #实现主要逻辑#1. start_url#2. 发送请求,获取响应self.driver.get(self.start_url)time.sleep(3)#3. 提取数据content_list, next_url = self.get_content_list()#4.保存self.save_content_list(content_list)# 5. 下一页数据的提取while next_url is not None:js = 'window.scrollTo(0,document.body.scrollHeight)'  # js语句:滚动到页面最底部self.driver.execute_script(js)  # 执行js的方法print(next_url.get_attribute('href'))next_url.click() #页面没有完全加载完,会报错time.sleep(3)# 此时在iframe标签中 代码逻辑需要我们先切出windows = self.driver.window_handlesself.driver.switch_to.window(windows[0])content_list, next_url = self.get_content_list()self.save_content_list(content_list)# 6. 退出driverself.driver.quit()if __name__ == '__main__':spider = CloudMuisc()spider.run()

selenium的使用教程3相关推荐

  1. Python爬虫4.4 — selenium高级用法教程

    Python爬虫4.4 - selenium高级用法教程 综述 Headless Chrome 设置请求头 设置代理IP 常用启动项参数options设置 Cookie操作 selenium设置coo ...

  2. Selenium Webdriver 简易教程

    Selenium是ThroughtWorks公司开发的一套Web自动化测试工具. 它分为三个组件: Selenium IDE Selenium RC (Remote Control) Selenium ...

  3. Selenium爬虫入门教程

    Selenium自动化爬取谷歌学术(学术个人档案的h指数和i10指数) Selenium自动化爬取谷歌学术 Selenium自动化爬取谷歌学术(学术个人档案的h指数和i10指数) Selenium库与 ...

  4. Selenium Webdriver系列教程(1)—快速开始

    Selenium 1.x时代已经远去,它理应躺在历史的角落里,靠着壁炉烤着火,抽着旱烟,在袅袅的升起的青烟中回忆那曾经属于自己的美好时代. 不过事实却并非如此,现今原本早应退役的selenium 1. ...

  5. selenium的使用教程2

    1. selenium 处理cookie driver.get_cookies()获取的是完整的cookie信息!不光有name.value,还有domain等其他信息! # 把cookie转化为字典 ...

  6. selenium的使用教程1

    Selenium 库里有个叫 WebDriver 的 API,WebDriver 可以加载网站的浏览器,但是也可以像 BeautifulSoup 或者其他 Selector 对象一样用来查找页面元素, ...

  7. python爬虫库教程_Python爬虫Selenium库详细教程

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于Python程序员 刚接触Python的新手.小白,可以复制下面的链接去免费观看Py ...

  8. 自动化测试工具 Selenium WebDriver 入门教程

    <div class="iteye-blog-content-contain" style="font-size: 14px"></div&g ...

  9. selenium+python安装教程

    1.安装python3.8+,若有其他版本要切换到python3.8+版本的解释器,若版本过低selenium会安装失败,并新建一个python3.8+版本的项目,可在文件-->设置--> ...

最新文章

  1. Promise详解(一) ----基础用法
  2. Python 之协程
  3. 【arduino】继续arduino玩CyberPi童芯派之官方arduino库
  4. Javascript基于对象三大特征
  5. php yii2 路径问题,yii2常用路径获取
  6. 使用Profiler Blocked Process Report Alert 监控数据库Blocking
  7. oracle 索引-1无效,oracle 索引失效原因及解決方法
  8. alter 弹出添加图片_解决PS保存JPG图片内存很大的方法(二)
  9. android vmware 分辨率,android 常见分辨率与DPI对照表
  10. 全国各省份结婚离婚面板数据(2000-2019年)
  11. mybatis-plus 的getOne用法
  12. Android 弹幕(一)自定义
  13. 免费思维导图软件有哪些?2022值得一试的思维导图软件!
  14. 2022-04-13 Ambient Light Proximity Sensor 光感和距离传感器 STK3311X调试记录 RK3566 Android11平台
  15. IBM WebsPhere Jndi数据源
  16. 假阳率(第一类错误)、假阴率,召回率、精确率
  17. 精通Web Analytics 2.0 (4) 第二章:选择你的网络分析灵魂伴侣的最佳策略
  18. python小工具之pdf转excel
  19. 用matlab模拟调音台,虚拟调音台下载_Resolume|v4.1.1_9号软件下载
  20. 虚拟化的主流技术介绍

热门文章

  1. 享元模式源码解析(jdk+tomcat)
  2. flyme禁止系统更新_魅族Flyme更新8.1.2.3A:重要系统更新!
  3. python制作软件封面_用python给MP3加封面图片,修改作者,专辑等信息
  4. 为什么说 Java 是按值传递的?
  5. Java 语法规定之外的命名注释规范
  6. permission denied和linux赋值权限chmod命令
  7. Linux—系统文件和目录介绍
  8. 国家文物局:长城沿线群众是文物保护的重要力量
  9. 这几个在搞低功耗广域网的,才是物联网的黑马
  10. 浅谈EntityFramework框架的使用