selenium的常用方法以及获取斗鱼直播信息

以百度搜索为例

from selenium import webdriver
import time

driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
#保存图片
#driver.save_screenshot("./a.png")

#选中输入框并输入文字
driver.find_element_by_id("kw").send_keys("哈哈")
#点击百度一下ann
driver.find_element_by_id("su").click()

#获取页面源码
#print(driver.page_source)

#获取cookires
#print(driver.get_cookies())
#获取cookies的键值
#print({i["name"]: i["value"] for i in driver.get_cookies()})


#当前url
#print(driver.current_url)


#关闭当前页面
#driver.close()

#退出
driver.quit()

除此之外,还有一些常用的方法
(接上面代码)

#driver.find_element_by_xpath("//li[@class='account-tab-account']")

#查找a标签内容为读书的元素的href属性
#print(driver.find_element_by_link_text("读书").get_attribute("href"))

#查找a标签内容包含一张的元素
#print(driver.find_element_by_partial_link_text("一张"))

#根据xpath获取元素的属性
# li_list=driver.find_elements_by_xpath("//div[@class='anony-nav-links']//li//a")
# print([i.get_attribute("href") for i in li_list ])

#根据xpath获取元素的文本
# li_list=driver.find_elements_by_xpath("//div[@class='anony-nav-links']//li//a")
# print([i.text for i in li_list ])


#driver.find_elements_by_class_name("")#不存在也不会报错
#driver.find_elements_by_class_name("")#不存在会报错



在这里讲一个特殊的方法,比如我们要登录豆瓣
在这里插入图片描述
明明有这个标签,可是我们在代码中却获取不了,这是为什么呢?往上翻,我们可以发现它在一个iframe里面,所以我们要先使用switch_to_frame()方法,里面可以传数字,如0表示第一个iframe,也可以传iframe的名字,还可以传xpath表达式
在这里插入图片描述

from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get("https://www.douban.com")
#time.sleep(4)
driver.switch_to_frame(0)
driver.find_elements_by_class_name("account-tab-account")[0].click()
driver.find_elements_by_xpath("//input[@id='username']")[0].send_keys("账号")
driver.find_elements_by_id("password")[0].send_keys("密码")
driver.find_elements_by_class_name("btn.btn-account.btn-active")[0].click()




接下来介绍一下通过常用方法来爬取斗鱼直播信息

from selenium import webdriver
import time
class Douyu:
    def __init__(self):
        self.driver=webdriver.Chrome()
        self.start_url="https://www.douyu.com/g_jdqs"
    def get_content_list(self):
        total_list=[]
        #每个直播信息都是一个li标签,所以先获得li列表,在遍历每个li里面的信息
        li_list = self.driver.find_elements_by_xpath("//li[@class='layout-Cover-item']")
        for li in li_list:
            li_dic = {}
            #保存直播间名称
            title = li.find_element_by_xpath(".//h3[@class='DyListCover-intro']")
            title_name = title.get_attribute("title")
            li_dic["title"] = title_name
            #保存主播名
            author = li.find_element_by_xpath(".//h2[@class='DyListCover-user']")
            author_name = author.text
            li_dic["author"] = author_name

            total_list.append(li_dic)
        #看当前页面是否有下一页这个标签
        next_page = self.driver.find_elements_by_xpath("//li[@class=' dy-Pagination-next']")
        next_page=next_page[0]if len(next_page)>0 else None
        print(total_list)
        return total_list,next_page
    def save(self,total_list):
        pass

    def run(self):
        #1 发送请求
        self.driver.get(self.start_url)
        #睡眠是为了让页面加载完毕
        time.sleep(7)
        #2 提取数据
        total_list,next_page=self.get_content_list()
        #3 保存数据
        self.save(total_list)
        #有下一页时继续爬取
        while(next_page!=None):
            #点击下一页
            next_page.click()
            time.sleep(3)
            #获取下一页内容
            total_list, next_page = self.get_content_list()
            self.save(total_list)
        #退出
        self.driver.quit()
if __name__ == '__main__':
    douyu=Douyu()
    douyu.run()












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值