动态页面的模拟点击:

以斗鱼直播为例:http://www.douyu.com/directory/all

爬取每页的房间名、直播类型、主播名称、在线人数等数据,然后模拟点击下一页,继续爬取

#!/usr/bin/python3
# -*- coding:utf-8 -*-
__author__ = 'mayi'"""
动态页面的模拟点击:模拟点击斗鱼直播:http://www.douyu.com/directory/all爬取每页房间名、直播类型、主播名称、在线人数等数据,然后模拟点击下一页,继续爬取
"""from selenium import webdriver
import json# 调用环境变量指定的PhantomJS浏览器创建浏览器对象,executable_path:指定PhantomJS位置
driver = webdriver.PhantomJS(executable_path = r"D:\Program Files\phantomjs\bin\phantomjs")
from bs4 import BeautifulSoupclass DouyuSpider(object):"""爬虫类"""def __init__(self):self.url = "http://www.douyu.com/directory/all/"self.driver = webdriver.PhantomJS()self.file_name = open("douyu.json", "w", encoding = "utf-8")def run(self):"""爬虫开始工作"""self.driver.get(self.url)# 循环处理每一页,直至最后一页page = 1start_flag = Truewhile True:# 等待3秒,防止访问过于频繁self.driver.implicitly_wait(3)print("正在处理第" + page + "页......")page += 1# 解析soup = BeautifulSoup(self.driver.page_source, "lxml")# 在线直播部分online_live = soup.find_all('ul', {'id': 'live-list-contentbox'})[0]# 房间列表live_list = online_live.find_all('li')# 处理每一个房间for live in live_list:# 房间名、直播类型、主播名称、在线人数# 房间名home_name = live.find_all('h3', {'class': 'ellipsis'})[0].get_text().strip()# 直播类型live_type = live.find_all('span', {'class': 'tag ellipsis'})[0].get_text().strip()# 主播名称anchor_name = live.find_all('span', {'class': 'dy-name ellipsis fl'})[0].get_text().strip()# 在线人数online_num = live.find_all('span', {'class' :'dy-num fr'})[0].get_text().strip()# print(home_name, live_type, anchor_name, online_num)item = {}item["房间名"] = home_nameitem["直播类型"] = live_typeitem["主播名称"] = anchor_nameitem["在线人数"] = online_numif start_flag:start_flag = Falsecontent = "[\n" + json.dumps(item)else:content = ",\n" + json.dumps(item)self.file_name.write(content)# page_source.find()未找到内容则返回-1if self.driver.page_source.find('shark-pager-disable-next') != -1:# 已到最后一页break# 模拟点击下一页self.driver.find_element_by_class_name('shark-pager-next').click()# 爬虫结束前关闭文件self.file_name.write("\n]")self.file_name.close()if __name__ == '__main__':douyu = DouyuSpider()douyu.run()

转载于:https://www.cnblogs.com/mayi0312/p/7236472.html

爬虫——模拟点击动态页面相关推荐

  1. python 爬虫模拟点击_爬虫——模拟点击动态页面

    动态页面的模拟点击: 以斗鱼直播为例:http://www.douyu.com/directory/all 爬取每页的房间名.直播类型.主播名称.在线人数等数据,然后模拟点击下一页,继续爬取 #!/u ...

  2. 爬虫-模拟点击,实现加载页面全部内容

    爬虫-模拟点击,实现加载页面全部内容 完成页面加载: 目标分析:在爬取页面数据时,如果是遇到这个不进行点击,会导致数据爬取不全. 解决方法:可以采取模拟点击来进行避免. 一,它对应的xpath是 二, ...

  3. java怎样模拟点击网页,笔者操作Java+selenium实现网站模拟点击和页面数据爬取

    电脑现已成为我们工作.生活和娱乐必不可少的工具了,在使用电脑的过程中,可能会遇到Java+selenium实现网站模拟点击和页面数据爬取的问题,如果我们遇到了Java+selenium实现网站模拟点击 ...

  4. python爬虫模拟点击下拉菜单和_python+selenium爬虫过程中的模拟点击问题

    题目描述 下拉菜单选项无法提取成列表以及不能够被点击,请帮忙分析看一下什么原因 题目来源及自己的思路 对于app移动掌上营业厅抓包后,PC端的爬虫过程. 第一步:进入首页,点击"更多&quo ...

  5. python爬虫怎么爬同一个网站的多页数据-请问爬虫如何爬取动态页面的内容?

    现在网页大多是动态网页,尤其是内容丰富,值得爬取的网站,几乎无一例外是动态的,比如狗东.淘宝和知乎,而且还有不少反爬手段,这些都大大提升了爬虫难度,尤其是淘宝,为了反爬不惜影响到正常用户使用. 面对这 ...

  6. python爬虫模拟点击和输入_爬虫笔记关于鼠标点击和内容输入

    1. 采用google浏览器(试验时有头浏览器方便检测,代码完成后改为无头浏览) from selenium importwebdriver## 1. 默认有头浏览器 driver =webdrive ...

  7. python模拟点击下一页_爬虫模拟点击下一页selenium

    爬虫实现翻页功能 from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from ...

  8. android模拟点击导致页面卡顿,逍遥安卓模拟器卡顿如何解决?模拟器卡顿解决方法介绍...

    是一款非常好用的电脑手游模拟器,不过有很多小伙伴表示在玩手游的时候会出现卡顿的情况,下面通过这篇文章给大家讲讲解决方法. 1.CPU vt开启 英特尔的硬件辅助虚拟化技术(Virtualization ...

  9. java测试模拟网页点击,httpunit爬虫模拟搜索详解与实战

    一.WEB测试工具介绍 httpunit是一个可以模拟浏览器的集成工具,它可以让你在不需要浏览器的情况下模拟浏览器的浏览行为,该工具是junit测试工具下面的一个子框架,主要用来做web端测试使用,它 ...

最新文章

  1. 2018年中国人工智能行业研究报告|附下载
  2. 深入推荐引擎相关算法 - 聚类
  3. win10组件服务计算机是红色的,KB4023057:Windows 10更新服务组件的更新
  4. python整数与IP地址转换
  5. kylin安装mysql_源码安装mysql
  6. WebSphere Application Server 5.0在Linux平台上中文界面乱码问题的解决
  7. C#中的Socket编程-TCP客户端
  8. mysql数据库之忘记root密码
  9. 基于BFS+DFS+CoordinateDescent的motion planning设计思路
  10. C语言课后习题(35)
  11. MacOS下SVN的使用
  12. spacy存在内存泄露问题
  13. 软件性能测试中常见问题,性能测试常见的问题
  14. 怎么设置电脑屏幕一直亮着_电脑屏幕分辨率的调节方法
  15. linux软件安装rar,Rar for Linux的安装方法
  16. Tcp协议socket通信数据包粘包问题分析及解决方案
  17. Echarts2的使用——绘制中国地图
  18. nssa和stub_OSPF stub,totally stub , NSSA , totally nssa
  19. go panic 与 recover
  20. 2022年高处安装、维护、拆除考试试卷及高处安装、维护、拆除作业考试题库

热门文章

  1. 运行roscore时候报错 Unable to contact my own server at 及 小海龟动不了的问题
  2. 【Qt】2D绘图之双缓冲绘图
  3. 【嵌入式】C语言高级编程-可变参数宏(12)
  4. java 加减乘除 工具类_Java数学工具类MathUtil详解
  5. python 三元运算符求abc_python三元运算符实现方法
  6. eja智能压力变送器工作原理_横河EJA压力变送器在脉冲线路堵塞诊断方法
  7. python开发cs软件_python cs架构实现简单文件传输
  8. Codeforces 987B. High School: Become Human
  9. C++模板类的虚函数成员
  10. caffe训练输入数据格式介绍(LMDB/imagelist)