爬取熊猫TV,javascript,selenium,模拟点击
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,模拟点击的更多相关文章
- 爬虫07 /scrapy图片爬取、中间件、selenium在scrapy中的应用、CrawlSpider、分布式、增量式
爬虫07 /scrapy图片爬取.中间件.selenium在scrapy中的应用.CrawlSpider.分布式.增量式 目录 爬虫07 /scrapy图片爬取.中间件.selenium在scrapy ...
- 动态网页爬取例子(WebCollector+selenium+phantomjs)
目标:动态网页爬取 说明:这里的动态网页指几种可能:1)需要用户交互,如常见的登录操作:2)网页通过JS / AJAX动态生成,如一个html里有<div id="test" ...
- 爬虫之selenium模拟点击
在利用爬虫爬取页面HTML信息得时候有的当你运用request方法爬取时爬下来得HTML信息和网站信息不相符,这也导致以后得爬去无法进行,这也是反扒机制之一,解决办法时利用代码进行模拟网页点击,来爬去 ...
- Python3爬虫(十三) 爬取动态页之Selenium
Infi-chu: http://www.cnblogs.com/Infi-chu/ Python提供了很多模拟浏览器运行的库,比如:Selenium.Splash等 1.常用的引用 from sel ...
- 爬取动态网页:Selenium
参考:http://blog.csdn.net/wgyscsf/article/details/53454910 概述 在爬虫过程中,一般情况下都是直接解析html源码进行分析解析即可.但是,有一种情 ...
- Python 爬取网页中JavaScript动态添加的内容(一)
当我们进行网页爬虫时,我们会利用一定的规则从返回的 HTML 数据中提取出有效的信息.但是如果网页中含有 JavaScript 代码,我们必须经过渲染处理才能获得原始数据.此时,如果我们仍采用常规方法 ...
- python实战之原生爬虫(爬取熊猫主播排行榜)
""" this is a module,多行注释 """ import re from urllib import request # B ...
- 使用Python自带的库和正则表达式爬取熊猫直播主播观看人气
主要是体现代码的规范性 from urllib import request import re class Spider(): url = 'https://www.panda.tv/cate/lo ...
- Python 爬取网页中JavaScript动态添加的内容(二)
使用 selenium + phantomjs 实现 1.准备环境 selenium(一个用于web应用程测试的工具)安装:pip install seleniumphantomjs(是一种无界面的浏 ...
随机推荐
- [android] 手机卫士设置向导页面
设置向导页面,通过SharedPreferences来判断是否已经设置过了,跳转到不同的页面 自定义样式 在res/values/styles.xml中 添加节点<style name=””&g ...
- iOS开发笔记9:NSUserDefaults存储自定义实体对象
NSUserDefaults常常用来本地存储一些简单的数据,例如用户信息等等,NSUserDefaults支持floats.doubles.integers.Booleans.URLs.NSData. ...
- 如何在自己的Windows系统上 架设服务器并开发网站,然后连入外网供外界访问?(JDK+Tomcat+花生壳)
<目前百度谷歌上都木有我这么完整的笔记,虽然各个部分都是来自百度的,然后自己实践,自己做截图笔记,嘻嘻 Made By HeYang> 环境:Windows 7 工具:JDK,Apache ...
- UVa 105 - The Skyline Problem(利用判断,在于想法)
题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...
- CTF中那些脑洞大开的编码和加密
0x00 前言 正文开始之前先闲扯几句吧,玩CTF的小伙伴也许会遇到类似这样的问题:表哥,你知道这是什么加密吗?其实CTF中脑洞密码题(非现代加密方式)一般都是各种古典密码的变形,一般出题者会对密文进 ...
- 通过JAVA反射,调用未知类的类方法
下面是一个比较简单的通过JAVA的反射机制调用已知方法的例子 package com.togeek.mvntest; import java.lang.reflect.InvocationTarget ...
- "ORA-12154: TNS:could not resolve the connect identifier specified"的解决办法
添加环境变量解决: 变量名:TNS_ADMIN 变量值:D:\Ocl\product\11.2.0\dbhome_1\NETWORK\ADMIN tnsnames.ora所在的路径
- 给Apache增加SSI支持(shtml的奥秘)
什么是SSI? SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思.从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针.SSI具有强大 ...
- python split()函数使用拆分字符串 将字符串转化为列表
函数:split()Python中有split()和os.path.split()两个函数,具体作用如下:split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list ...
- JasperReports教程:Report Data Sources
原文地址:http://www.tutorialspoint.com/jasper_reports/jasper_report_data_sources.htm Datasources是一个结构化的数 ...