python 爬虫模拟点击_爬虫——模拟点击动态页面
动态页面的模拟点击:
以斗鱼直播为例: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 爬虫模拟点击_爬虫——模拟点击动态页面相关推荐
- python中headers的作用_爬虫入门到精通-headers的详细讲解(模拟登录知乎)
直接开始案例吧. 本次我们实现如何模拟登陆知乎. 1.抓包 注意打开开发者工具后点击"preserve log",密码记得故意输入错误,然后点击登录 我们很简单的就找到了 我们需要 ...
- python爬虫实时更新数据_爬虫的增量式抓取和数据更新
一些想法 页面爬的多了,量上去了之后,就会遇到其他的问题,其实不管做什么技术量大了都会有问题.一般情况下,我认为解决"大量"问题的思路有两个:一种是着力于优化系统的能力,让原本只能 ...
- 爬虫python和c语言区别_爬虫概述 - Python教程 - C语言网
网络爬虫(又称为网页蜘蛛,网络机器人,更经常的称为网页追逐者),它按照一定的规则自动地抓取网络信息. 1. 产生背景 随着时代的进步,互联网上拥有大量的信息,但是我们该如何高效的获取这些信息成为了一个 ...
- 反爬虫兵法演绎04 _ 爬虫的首轮攻势:如何低调地拿到自己想要的数据?
本资源由 Java学习者论坛 收集整理 04 | 爬虫的首轮攻势:如何低调地拿到自己想要的数据? 你好啊,我是DS Hunter.又见面了. 前面我和你聊了聊爬虫和反爬虫的历史,感觉这是一个内卷的死结 ...
- js 模拟点击_爬虫js逆向之无限debugger--抖音第三方数据分析平台的坑
爬虫js逆向系列 我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现,这三方面解析,供大家参考爬虫认知 在程序猿所有的方向中,爬虫是离money最近的一个方向,你 ...
- python爬虫爬微信红包_爬虫之微博抢红包
先让大家看下最终效果... 1,使用的工具及包 google浏览器 User-Agent Switcher for Google Chrome 这是一个能自定义浏览器头的Google浏览器插件 req ...
- python 爬取搞笑视频_爬虫篇 | 用Python爬超级搞笑的视频
最近整理一个爬虫系列方面的文章,不管大家的基础如何,我从头开始整一个爬虫系列方面的文章,让大家循序渐进的学习爬虫,小白也没有学习障碍. 这两天看到别人用Python下载视频,于是我也来试一下平时总是喜 ...
- 前端js自动填写 点击_爬虫自动填写学生健康打卡表
最近由于是特殊时期,这个寒假无比漫长.在开学前夕,许多学校要求学生每天打卡自己的健康情况. 一开始的时候,我是用selenium驱动浏览器帮助自己填写每天的健康状况,并做了一套web程序,可供学校的其 ...
- python爬取豆瓣短评_爬虫-爬取豆瓣短评
爬虫-爬取豆瓣短评 啥是爬虫? 按照一定的规则,自动地抓取互联网信息的程序. 为啥要用爬虫? 可以利用爬虫自动地采集互联网中的信息,采集回来后进行相应的存储或处理,在需要检索某些信息的时候,只需在 ...
最新文章
- LeetCode简单题之长按键入
- Division 贪心,模拟 牛客练习赛95
- centos 5.8 升级php5.1至5.3
- mysql显示百分比例_显示值mysql的百分比
- ZZULIOJ 1115: 数组最小值
- 硬纪元干货|镁客网萨向东:推动硬科技产业落地,助力传统产业升
- 使用OD修改程序窗口标题和提示信息
- FPGA丨RGB转Ycbcr算法实现
- QinQ、VLAN Mapping原理和配置
- 回顾2017展望未来
- 【示波器专题】示波器带宽对测量的影响
- 一台计算机有两个用户怎样共享,两台计算机如何共享一台打印机?
- 2021年山东省安全员C证考试及山东省安全员C证模拟考试
- oracle共几条当前几条,Oracle 以某字段分组,以某字段排序,取前几条
- 双系统基础上装三系统教程
- 航天信息a3服务器怎么打开,航天信息-睿财A3-使用说明.doc
- linux ln -sv命令,linux ln 命令详解
- adc 采样时间 采样周期数 采样频率计算(以stm32为例)
- 渗透测试-文件上传/下载/包含
- 攻防世界pwn新手区整理
热门文章
- 如何利用python产生随机数(randrange函数和random函数)
- mysql connstring_(最全的数据库连接字符串)connectionstring
- 认证管理(锐捷交换篇)
- “办公自动化(OA)系统解决方案集”上线
- 如何实现计算机对人脑的模拟,计算机大脑模拟技术
- Filament 渲染引擎剖析 之 多线程渲染 2
- DBSCAN聚类——Python实现
- 网站服务器主要是pcu还是内存,PCU占用一直跑的很高的真正元凶
- Tensorflow slim库
- B站狂神说JavaWeb学习笔记