爬虫学习——Selenium使用方法简述

Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。接下来我们将学习如何使用selenium。

selenium提取数据

    1.driver对象的常用属性和方法
        1.driver.page_source()        当前标签页浏览器渲染之后的网页源代码
        2.driver.current_url()        当前标签页的url
        3.driver.close()              关闭当前标签页
        4.driver.quit()               关闭浏览器
        5.driver.forward()            页面前进
        6.driver.back()               页面后退
        7.driver.screen_shot(img_name)  页面截图

    2.元素定位方法
        1.driver.find_element_by_xpath()
        2.driver.find_element_by_css_selector()
        3.driver.find_element_by_name()
        4.driver.find_element_by_class_name()
        5.driver.find_element_by_id()
        6.driver.find_element_by_link_text()
        7.driver.find_element_by_partial_link_text()
        8.driver.find_element_by_tag_name()
            element -> elements 定位符合条件的元素,并返回列表

    3.标签对象属性值和文本值获取
        文本值:.text
        属性值:.get_attribute('href')

    4.元素操作函数
        点击:  click()
        发送值:send_keys()
        清除:  clear()

    5.其他使用方法
        1.标签页的切换
            获取所有标签页句柄   current_windows = driver.window_handles
            切换标签           driver.switch_to.window(current_windows[0])
        2.iframe的切换
            1.driver.switch_to.frame('id')
            2.el_frame = driver.find_element_by_xpath('')
              driver.switch_to.frame(el_frame)
        3.获取cookies值
            driver.get_cookies()
        4.执行js代码
            滚动条的拖动
                js = 'scrollTo(0, 500)' #0:x方向
                driver.execute_script(js)
        5.页面等待
            强制等待:sleep()
            隐式等待 :设置一个最大时间,超时报错
                driver.implicitly_wait(10) (s)
            显示等待
        6.无界面模式
            options = webdriver.ChromeOptions()
            options.add_argument("--headless")
            options.add_argument("--disable-gpu")
            driver = webdriver.Chrome(chrome_options = options)
        7.代理ip
            options.add_argument("--proxy-server = http://202.20.16.82.9527")
        8.更换user-agent
            options.add_argument("--user-agent=***")s

上面简单介绍了关于selenium的一些基本语法,下面我们将通过使用selenium模块爬取斗鱼网站作为实践:

import time
from selenium import webdriver

class Douyu(object):

    def __init__(self):
        self.url = 'https://www.douyu.com/directory/all'
        self.driver = webdriver.Chrome()

    def parse_data(self):
        room_list = self.driver.find_elements_by_xpath('//*[@id="listAll"]/section[2]/div[2]/ul/li/div')
        data_list = []
        for room in room_list:
            temp = {}
            temp['title'] = room.find_element_by_xpath('./a/div[2]/div[1]/h3').text
            temp['type'] = room.find_element_by_xpath('./a/div[2]/div[1]/span').text
            data_list.append(temp)
        return data_list

    def save_data(self, data_list):
        for data in data_list:
            print(data)

    def run(self):
        # url
        # driver
        # get
        self.driver.get(self.url)
        # 循环爬取
        for i in range(2):
            time.sleep(3)
            # parse
            data_list = self.parse_data()
            # save
            self.save_data(data_list)
            # next
            self.driver.execute_script('scrollTo(0, 100000)')
            self.driver.find_elements_by_xpath('//*[@id="listAll"]/section[2]/div[2]/div/ul/li[9]/span')[0].click()
            print(i)
        self.driver.close()


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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值