爬取熊猫TV,javascript,selenium,模拟点击

简介: from selenium import webdriverimport csvdef get_pages_numger(browser): res = browser.find_elements_by_xpath('//div[@class="page-component"]/a[7]') return int(res.
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()
    
    
    
目录
相关文章
|
6月前
|
JavaScript 前端开发 测试技术
使用Selenium执行JavaScript脚本:探索Web自动化的新领域
本文介绍了如何在Selenium中使用JavaScript解决自动化测试中的复杂问题。Selenium的`execute_script`函数用于同步执行JS,例如滑动页面、操作时间控件等。在滑动操作示例中,通过JS将页面滚动到底部,点击下一页并获取页面信息。对于只读时间控件,利用JS去除readonly属性并设置新日期。使用JS扩展了Selenium的功能,提高了测试效率和精准度,适用于各种自动化测试场景。
|
JavaScript
selenium--操作JS弹框
selenium--操作JS弹框
|
1月前
|
Web App开发 前端开发 JavaScript
JavaScript动态渲染页面爬取——Selenium的使用(一)
JavaScript动态渲染页面爬取——Selenium的使用(一)
|
1月前
|
Web App开发 数据采集 JavaScript
JavaScript动态渲染页面爬取——Selenium的使用(二)
JavaScript动态渲染页面爬取——Selenium的使用(二)
|
6月前
|
Web App开发 JavaScript 前端开发
《手把手教你》系列技巧篇(三十九)-java+ selenium自动化测试-JavaScript的调用执行-上篇(详解教程)
【5月更文挑战第3天】本文介绍了如何在Web自动化测试中使用JavaScript执行器(JavascriptExecutor)来完成Selenium API无法处理的任务。首先,需要将WebDriver转换为JavascriptExecutor对象,然后通过executeScript方法执行JavaScript代码。示例用法包括设置JS代码字符串并调用executeScript。文章提供了两个实战场景:一是当时间插件限制输入时,用JS去除元素的readonly属性;二是处理需滚动才能显示的元素,利用JS滚动页面。还给出了一个滚动到底部的代码示例,并提供了详细步骤和解释。
90 10
|
6月前
|
JavaScript 前端开发 Java
《手把手教你》系列技巧篇(四十)-java+ selenium自动化测试-JavaScript的调用执行-下篇(详解教程)
【5月更文挑战第4天】本文介绍了如何使用JavaScriptExecutor在自动化测试中实现元素高亮显示。通过创建并执行JS代码,可以改变元素的样式,例如设置背景色和边框,以突出显示被操作的元素。文中提供了一个Java示例,展示了如何在Selenium中使用此方法,并附有代码截图和运行效果展示。该技术有助于跟踪和理解测试过程中的元素交互。
51 0
|
Web App开发 前端开发 JavaScript
Selenium 如何定位 JavaScript 动态生成的页面元素
Selenium 是一个自动化测试工具,可以用来模拟浏览器的操作,如点击、输入、滚动等。但是有时候,我们需要定位的页面元素并不是一开始就存在的,而是由 JavaScript 动态生成的。这时候,如果我们直接用 Selenium 的 find_element 方法去定位元素,可能会出现找不到元素的错误,因为页面还没有加载完成。为了解决这个问题,我们需要使用一些特定的定位技巧,让 Selenium 等待元素出现后再进行操作。
536 0
|
Web App开发 JavaScript 前端开发
Python Selenium 执行 JavaScript
Python Selenium 执行 JavaScript
|
Web App开发 JavaScript 前端开发
如何使用Selenium自动化Chrome浏览器进行Javascript内容的数据挖掘和分析?
数据挖掘和分析是当今互联网时代的重要技能,它可以帮助我们从海量的信息中提取有价值的知识,为我们的决策和行动提供支持。但是,有些网站的内容是通过Javascript动态生成的,这就给数据挖掘和分析带来了一定的难度。如何才能有效地获取和处理这些Javascript内容呢?本文将介绍一种简单而强大的方法,就是使用Selenium自动化Chrome浏览器进行Javascript内容的数据挖掘和分析。
135 0
如何使用Selenium自动化Chrome浏览器进行Javascript内容的数据挖掘和分析?
|
数据采集 Web App开发 JavaScript
如何使用Selenium自动化Firefox浏览器进行Javascript内容的多线程和分布式爬取
在本文中,我们将介绍如何使用Selenium自动化Firefox浏览器进行Javascript内容的多线程和分布式爬取。我们将以一个简单的示例为例,抓取百度搜索结果页面中的标题和链接,并将结果保存到本地文件中。我们将使用Python语言编写代码,并使用爬虫代理服务器来隐藏我们的真实IP地址。
153 0
如何使用Selenium自动化Firefox浏览器进行Javascript内容的多线程和分布式爬取