selenium动态页面模拟点击

# 爬取斗鱼直播平台的所有房间信息:

#coding=utf-8
from selenium import webdriver
import json
import time
class Douyu:
    # 1.发送首页的请求
    def __init__(self):
        self.driver = webdriver.PhantomJS()
        self.driver.get("https://www.douyu.com/directory/all") #请求首页

    #获取没页面内容
    def get_content(self):
        time.sleep(3) #每次发送完请求等待三秒,等待页面加载完成
        li_list = self.driver.find_elements_by_xpath(‘//ul[@id="live-list-contentbox"]/li‘)
        contents = []
        for i in li_list: #遍历房间列表
            item = {}
            item["img"] = i.find_element_by_xpath("./a//img").get_attribute("src") #获取房间图片
            item["title"] = i.find_element_by_xpath("./a").get_attribute("title") #获取房间名字
            item["category"] = i.find_element_by_xpath("./a/div[@class=‘mes‘]/div/span").text #获取房间分类
            item["name"] = i.find_element_by_xpath("./a/div[@class=‘mes‘]/p/span[1]").text #获取主播名字
            item["watch_num"] = i.find_element_by_xpath("./a/div[@class=‘mes‘]/p/span[2]").text #获取观看人数
            print(item)
            contents.append(item)
        return contents
    #保存本地
    def save_content(self,contents):
        f = open("douyu.txt","a")
        for content in contents:
            json.dump(content,f,ensure_ascii=False,indent=2)
            f.write("\n")
        f.close()

    def run(self):
        #1.发送首页的请求
        #2.获取第一页的信息
        contents = self.get_content()
            #保存内容
        self.save_content(contents)
        #3.循环  点击下一页按钮,知道下一页对应的class名字不再是"shark-pager-next"
        while self.driver.find_element_by_class_name("shark-pager-next"): #判断有没有下一页
            #点击下一页的按钮
            self.driver.find_element_by_class_name("shark-pager-next").click() #
            # 4.继续获取下一页的内容
            contents = self.get_content()
            #4.1.保存内容
            self.save_content(contents)

if __name__ == "__main__":
    douyu = Douyu()
    douyu.run()

  

原文地址:https://www.cnblogs.com/yzg-14/p/12203719.html

时间: 2024-10-21 08:40:11

selenium动态页面模拟点击的相关文章

爬虫之动态HTML处理(Selenium与PhantomJS )动态页面模拟点击

动态页面模拟点击 #!/usr/bin/env python # -*- coding:utf-8 -*- # python的测试模块 import unittest from selenium import webdriver from bs4 import BeautifulSoup class douyuSelenium(unittest.TestCase): # 初始化方法 def setUp(self): self.driver = webdriver.PhantomJS() #具体的

爬虫——模拟点击动态页面

动态页面的模拟点击: 以斗鱼直播为例:http://www.douyu.com/directory/all 爬取每页的房间名.直播类型.主播名称.在线人数等数据,然后模拟点击下一页,继续爬取 #!/usr/bin/python3 # -*- conding:utf-8 -*- __author__ = 'mayi' """ 动态页面的模拟点击: 模拟点击斗鱼直播:http://www.douyu.com/directory/all 爬取每页房间名.直播类型.主播名称.在线人数

使用selenium模拟登陆点击登陆按钮

首先导入模块: from selenium import webdriver 定义一个提交请求的urlurl='自己定义' driver = webdriver.PhantomJS(executable_path='D:\phantomjs.exe')#动态获取的,, driver.get(url) driver.find_element_by_id('username').clear() #清空用户名这一栏 driver.find_element_by_id('username').send_

python --selenium+phantomjs爬取动态页面广告源码

背景:利用爬虫,爬取网站页面广告元素,监控爬取元素的数目,定时发送监控邮件 #!/usr/bin/env python2.7 # -*- coding: utf-8 -*- ''' @xiayun @[email protected] #爬取网站内容,利用phantomjs:IP代理+修改UA+动态页面执行JS ''' from selenium import webdriver from selenium.webdriver.common.desired_capabilities import

JQuery模拟点击页面上的所有a标签,触发onclick事件

注意: 这种方法需要给所有的a标签加上id属性 <script> $(function () { // 模拟点击页面上的所有a标签,触发onclick事件 $("a").each(function () { document.getElementById(this.id).click(); }) }) </script> 原文地址:https://www.cnblogs.com/daleyzou/p/9500782.html

selenium自动化测试工具模拟登陆爬取当当网top500畅销书单

selenium自动化测试工具可谓是爬虫的利器,基本动态加载的网页都能抓取,当然随着大型网站的更新,也出现针对selenium的反爬,有些网站可以识别你是否用的是selenium访问,然后对你加以限制. 当当网目前还没有对这方面加以限制,所以今天就用这个练习熟悉一下selenium操作,我们可以试一下爬取一下当当网top500的畅销书单的相关信息,页面如下: 虽然这个页面不用登录就可以进来,但是我们可以随便试一下模拟登陆,直接在这个页面上面点击登录进入登录界面,然后会弹出一下窗口, 这是百分百会

selenium:能够模拟人类打开浏览器的爬虫利器

介绍 selenium相当于是一个机器人,可以模拟人类登陆浏览器的行为,比如点击.填充数据.删除cookie等等.Chromedriver是一个驱动Chrome的程序,使用它才可以驱动浏览器,其实Chromedriver之前是用来做自动化测试的,但是发现很适合爬虫.当然这里的是Chromedriver,不同的浏览器有不同的driver,但是这里我们只介绍Chrome.毕竟谷歌浏览器在浏览器这一层面上基本算是主宰天下了.关于selenium一般是为了获取动态数据的,对于那些使用ajax技术的网站,

Python动态页面爬起

一.Ajax数据爬取 1.Ajax介绍 Ajax,全称为Asynchronous JavaScript and XML,即异步的JavaScript和XML. 它不是一门编程语言,而是利用JavaScript在保证页面不被刷新.页面链接不改变的情况下与服务器交换数据并更新部分网页的技术.发送Ajax请求到网页更新过程,简单分为以下3步:发送请求:解析内容:渲染网页.Ajax具有特殊的请求类型,它叫作xhr. 2.Ajax数据爬取 # 首先,定义一个方法来获取每次请求的结果. 在请求时,page是

C#获取网页中某个元素的位置,并模拟点击

我们在开发中,往往要得到网页中某个元素的位置,并且点击它.要模拟一次鼠标点击并不难,只要调用一个API就行了,关键就是怎么样得到这个元素的位置,还有判断是否要滚动滚动条,要滚动多少行能让元素显示出来.当然我们可以动态改变它的CSS,让它在特定的位置显示出来,但这个方法只对比较简单的网页有效. 那我们怎么才能得到网页的位置呢,首先我们来看一张图片 从这里我们可以看到五个offset的属性,这里我们主要利用offsetparent, offsetleft 和offsettop,我们用offsetpa