动态页面的模拟点击:

以斗鱼直播为例: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 BeautifulSoup

class 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 = 1

start_flag = True

while 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_name

item["直播类型"] = live_type

item["主播名称"] = anchor_name

item["在线人数"] = online_num

if start_flag:

start_flag = False

content = "[\n" + json.dumps(item)

else:

content = ",\n" + json.dumps(item)

self.file_name.write(content)

# page_source.find()未找到内容则返回-1

if 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()

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

  1. python中headers的作用_爬虫入门到精通-headers的详细讲解(模拟登录知乎)

    直接开始案例吧. 本次我们实现如何模拟登陆知乎. 1.抓包 注意打开开发者工具后点击"preserve log",密码记得故意输入错误,然后点击登录 我们很简单的就找到了 我们需要 ...

  2. python爬虫实时更新数据_爬虫的增量式抓取和数据更新

    一些想法 页面爬的多了,量上去了之后,就会遇到其他的问题,其实不管做什么技术量大了都会有问题.一般情况下,我认为解决"大量"问题的思路有两个:一种是着力于优化系统的能力,让原本只能 ...

  3. 爬虫python和c语言区别_爬虫概述 - Python教程 - C语言网

    网络爬虫(又称为网页蜘蛛,网络机器人,更经常的称为网页追逐者),它按照一定的规则自动地抓取网络信息. 1. 产生背景 随着时代的进步,互联网上拥有大量的信息,但是我们该如何高效的获取这些信息成为了一个 ...

  4. 反爬虫兵法演绎04 _ 爬虫的首轮攻势:如何低调地拿到自己想要的数据?

    本资源由 Java学习者论坛 收集整理 04 | 爬虫的首轮攻势:如何低调地拿到自己想要的数据? 你好啊,我是DS Hunter.又见面了. 前面我和你聊了聊爬虫和反爬虫的历史,感觉这是一个内卷的死结 ...

  5. js 模拟点击_爬虫js逆向之无限debugger--抖音第三方数据分析平台的坑

    爬虫js逆向系列 我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现,这三方面解析,供大家参考爬虫认知 在程序猿所有的方向中,爬虫是离money最近的一个方向,你 ...

  6. python爬虫爬微信红包_爬虫之微博抢红包

    先让大家看下最终效果... 1,使用的工具及包 google浏览器 User-Agent Switcher for Google Chrome 这是一个能自定义浏览器头的Google浏览器插件 req ...

  7. python 爬取搞笑视频_爬虫篇 | 用Python爬超级搞笑的视频

    最近整理一个爬虫系列方面的文章,不管大家的基础如何,我从头开始整一个爬虫系列方面的文章,让大家循序渐进的学习爬虫,小白也没有学习障碍. 这两天看到别人用Python下载视频,于是我也来试一下平时总是喜 ...

  8. 前端js自动填写 点击_爬虫自动填写学生健康打卡表

    最近由于是特殊时期,这个寒假无比漫长.在开学前夕,许多学校要求学生每天打卡自己的健康情况. 一开始的时候,我是用selenium驱动浏览器帮助自己填写每天的健康状况,并做了一套web程序,可供学校的其 ...

  9. python爬取豆瓣短评_爬虫-爬取豆瓣短评

    爬虫-爬取豆瓣短评 啥是爬虫? ​按照一定的规则,自动地抓取互联网信息的程序. 为啥要用爬虫? ​可以利用爬虫自动地采集互联网中的信息,采集回来后进行相应的存储或处理,在需要检索某些信息的时候,只需在 ...

最新文章

  1. LeetCode简单题之长按键入
  2. Division 贪心,模拟 牛客练习赛95
  3. centos 5.8 升级php5.1至5.3
  4. mysql显示百分比例_显示值mysql的百分比
  5. ZZULIOJ 1115: 数组最小值
  6. 硬纪元干货|镁客网萨向东:推动硬科技产业落地,助力传统产业升
  7. 使用OD修改程序窗口标题和提示信息
  8. FPGA丨RGB转Ycbcr算法实现
  9. QinQ、VLAN Mapping原理和配置
  10. 回顾2017展望未来
  11. 【示波器专题】示波器带宽对测量的影响
  12. 一台计算机有两个用户怎样共享,两台计算机如何共享一台打印机?
  13. 2021年山东省安全员C证考试及山东省安全员C证模拟考试
  14. oracle共几条当前几条,Oracle 以某字段分组,以某字段排序,取前几条
  15. 双系统基础上装三系统教程
  16. 航天信息a3服务器怎么打开,航天信息-睿财A3-使用说明.doc
  17. linux ln -sv命令,linux ln 命令详解
  18. adc 采样时间 采样周期数 采样频率计算(以stm32为例)
  19. 渗透测试-文件上传/下载/包含
  20. 攻防世界pwn新手区整理

热门文章

  1. 如何利用python产生随机数(randrange函数和random函数)
  2. mysql connstring_(最全的数据库连接字符串)connectionstring
  3. 认证管理(锐捷交换篇)
  4. “办公自动化(OA)系统解决方案集”上线
  5. 如何实现计算机对人脑的模拟,计算机大脑模拟技术
  6. Filament 渲染引擎剖析 之 多线程渲染 2
  7. DBSCAN聚类——Python实现
  8. 网站服务器主要是pcu还是内存,PCU占用一直跑的很高的真正元凶
  9. Tensorflow slim库
  10. B站狂神说JavaWeb学习笔记