爬取熊猫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()
    
    
    
本文转自罗兵博客园博客,原文链接:http://www.cnblogs.com/hhh5460/p/5708802.html ,如需转载请自行联系原作者
相关文章
|
23天前
|
JavaScript 前端开发
js实现点击音频实现播放功能
js实现点击音频实现播放功能
|
2月前
|
JavaScript 前端开发 测试技术
使用Selenium执行JavaScript脚本:探索Web自动化的新领域
本文介绍了如何在Selenium中使用JavaScript解决自动化测试中的复杂问题。Selenium的`execute_script`函数用于同步执行JS,例如滑动页面、操作时间控件等。在滑动操作示例中,通过JS将页面滚动到底部,点击下一页并获取页面信息。对于只读时间控件,利用JS去除readonly属性并设置新日期。使用JS扩展了Selenium的功能,提高了测试效率和精准度,适用于各种自动化测试场景。
52 1
|
4月前
|
JavaScript 前端开发 数据安全/隐私保护
JS点击切换背景图
JS点击切换背景图
35 0
|
3月前
|
Web App开发 前端开发 IDE
Airtest-Selenium实操小课①:爬取新榜数据
Airtest-Selenium实操小课①:爬取新榜数据
|
8月前
|
JavaScript 前端开发
使用JavaScript,点击按钮一个打开新的窗体
使用JavaScript,点击按钮一个打开新的窗体
|
26天前
|
JavaScript
js生成二维码点击可放大
js生成二维码点击可放大
|
2月前
|
JavaScript
JS+CSS3点击粒子烟花动画js特效
JS+CSS3点击粒子烟花动画js特效
18 0
JS+CSS3点击粒子烟花动画js特效
|
2月前
|
JavaScript 前端开发
JavaScript随手笔记---轮播图(点击切换)
JavaScript随手笔记---轮播图(点击切换)
JavaScript随手笔记---轮播图(点击切换)
|
2月前
|
JavaScript
|
3月前
|
Web App开发 IDE 测试技术
实战练习:用airtest-selenium脚本爬取百度热搜标题
实战练习:用airtest-selenium脚本爬取百度热搜标题

热门文章

最新文章