from selenium import webdriver
import csv def get_pages_numger(browser):
res = browser.find_elements_by_xpath('//div[@class="page-component"]/a[7]')
return int(res.text) def get_next_page_buttun(browser):
button = browser.find_elements_by_xpath()
return button def get_rooms_number_in_a_page(browser):
res = []
for li in browser.find_elements_by_xpath('//li[@data-id]'):
id = li.get_attribute("data-id")
nickname = li.find_element_by_xpath('//span[@class="video-nickname"]')
number = li.find_element_by_xpath('//span[@class="video-number"]') # 观众数
cate = li.find_element_by_xpath('//span[@class="video-cate"]')
res.append([id, nickname, cate, number])
return res def get_rooms_number_in_all_pages(browser, pages_number):
res = []
for i in range(pages_number):
print('第{}页'.format(i+1))
# 抓取
res.extend(get_rooms_number_in_a_page(browser)) # 点击进入下一页
next_page_button = get_next_page_buttun(browser)
next_page_button.click() browser.close() return res def save_to_csv(rooms_number):
with open('live_rooms_number.csv', 'w') as f:
writer = csv.writer(f, lineterminator='\n')
writer.writerow(['id','nickname','cate', 'number']) # 表头
writer.writerows(rooms_number) def read_from_csv():
with open('live_rooms_number.csv', 'r') as f:
reader = csv.reader(f)
your_list = list(reader)[1:] # 去掉表头
#print(your_list)
return your_list def get_rooms_number():
browser = webdriver.Firefox() browser.get('http://www.panda.tv/all')
assert '熊猫TV' in browser.title pages_number = get_pages_numger(browser) all_live_rooms_number = get_rooms_number_in_all_pages(browser, pages_number) return all_live_rooms_number if __name__ == '__main__': rooms_number = get_rooms_number()
save_to_csv(rooms_number) #rooms_number = read_from_csv()

爬取熊猫TV,javascript,selenium,模拟点击的更多相关文章

  1. 爬虫07 /scrapy图片爬取、中间件、selenium在scrapy中的应用、CrawlSpider、分布式、增量式

    爬虫07 /scrapy图片爬取.中间件.selenium在scrapy中的应用.CrawlSpider.分布式.增量式 目录 爬虫07 /scrapy图片爬取.中间件.selenium在scrapy ...

  2. 动态网页爬取例子(WebCollector+selenium+phantomjs)

    目标:动态网页爬取 说明:这里的动态网页指几种可能:1)需要用户交互,如常见的登录操作:2)网页通过JS / AJAX动态生成,如一个html里有<div id="test" ...

  3. 爬虫之selenium模拟点击

    在利用爬虫爬取页面HTML信息得时候有的当你运用request方法爬取时爬下来得HTML信息和网站信息不相符,这也导致以后得爬去无法进行,这也是反扒机制之一,解决办法时利用代码进行模拟网页点击,来爬去 ...

  4. Python3爬虫(十三) 爬取动态页之Selenium

    Infi-chu: http://www.cnblogs.com/Infi-chu/ Python提供了很多模拟浏览器运行的库,比如:Selenium.Splash等 1.常用的引用 from sel ...

  5. 爬取动态网页:Selenium

    参考:http://blog.csdn.net/wgyscsf/article/details/53454910 概述 在爬虫过程中,一般情况下都是直接解析html源码进行分析解析即可.但是,有一种情 ...

  6. Python 爬取网页中JavaScript动态添加的内容(一)

    当我们进行网页爬虫时,我们会利用一定的规则从返回的 HTML 数据中提取出有效的信息.但是如果网页中含有 JavaScript 代码,我们必须经过渲染处理才能获得原始数据.此时,如果我们仍采用常规方法 ...

  7. python实战之原生爬虫(爬取熊猫主播排行榜)

    """ this is a module,多行注释 """ import re from urllib import request # B ...

  8. 使用Python自带的库和正则表达式爬取熊猫直播主播观看人气

    主要是体现代码的规范性 from urllib import request import re class Spider(): url = 'https://www.panda.tv/cate/lo ...

  9. Python 爬取网页中JavaScript动态添加的内容(二)

    使用 selenium + phantomjs 实现 1.准备环境 selenium(一个用于web应用程测试的工具)安装:pip install seleniumphantomjs(是一种无界面的浏 ...

随机推荐

  1. 【原】训练自己的haar-like特征分类器并识别物体(3)

    在前两篇文章中,我介绍了<训练自己的haar-like特征分类器并识别物体>的前三个步骤: 1.准备训练样本图片,包括正例及反例样本 2.生成样本描述文件 3.训练样本 4.目标识别 == ...

  2. Web应用程序系统的多用户权限控制设计及实现-项目架构【3】

    本章主要讲述Web权限管理系统的项目架构,及开发中需要的基本类和相关的CSS,JS文件. 1.1系统结构 本系统搭建开发工具为Visual Studio 2012,采用ASP.NET MVC 4.0技 ...

  3. js事件执行顺序

    http://ejohn.org/blog/how-javascript-timers-work/

  4. 解决log4j:WARN Error initializing output writer. log4j:WARN Unsupported encoding?的问题

    异常名:log4j:WARN Error initializing output writer. log4j:WARN Unsupported encoding? 异常截图: 在一般的javaweb项 ...

  5. python基本数据结构-集合-集合运算

  6. 《HeadFirst设计模式》读后感——对学习设计模式的一些想法

    最近看完了<HeadFirst设计模式>,GOF的<设计模式——可复用面向对象软件的基础>的创建型模式也读完了,经历了从一无所知到茅塞顿开再到充满迷惑的过程. 不得不说< ...

  7. 数据结构--树状数组&&线段树--基本操作

    随笔目的:方便以后对树状数组(BIT)以及基本线段树的回顾 例题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 例题:hdu 1166 敌兵布阵 T ...

  8. jQuery事件绑定on、off 和one,取代bind, live, delegate

    jQuery最新版建议:最好用on来代替以前的bind, live, delegate,其中live是最不建议使用的. on和off的格式 on $(elements).on(events[, sel ...

  9. mac svn 终端操作命令

    svn 删除目录命令 svn 提交命令 svn commit -m zenggui 出来要提交的目录后,按shift + : + q 如遇到不明白的可以输入:svn help 比如想查询删除命令的使用 ...

  10. git一些常用设置

    用法:git config [选项] 配置文件位置    --global              使用全局配置文件    --system              使用系统级配置文件    -- ...