selenium小项目实践

1. 斗鱼爬虫

爬取斗鱼直播平台的所有房间信息:游戏直播_全部游戏直播_斗鱼直播

1.1 思路分析:

  1. 数据的位置

    每个房间的数据都在id=live-list-contentbox的ul中

  2. 实现翻页和控制程序结束

    selenium中通过点击就可以实现翻页,观察存在下一页和不存在下一页时候标签的变化

    存在下一页时:

    不存在下一页时:

1.2 参考代码

from selenium import webdriver
import time
 
 
class DouYu:
    def __init__(self):
        self.start_url = "https://www.douyu.com/directory/all"
        self.driver = webdriver.Chrome(executable_path='/home/worker/Desktop/driver/chromedriver')
 
    def get_content_list(self): #提取数据
        li_list = self.driver.find_elements_by_xpath("//ul[@id='live-list-contentbox']/li")
        content_list = []
        for li in li_list:
            item = {}
            item["title"] = li.find_element_by_xpath("./a").get_attribute("title")
            item["anchor"] = li.find_element_by_xpath(".//span[@class='dy-name ellipsis fl']").text
            item["watch_num"] = li.find_element_by_xpath(".//span[@class='dy-num fr']").text
            # print(item)
            content_list.append(item)
 
        #提取下一页的元素
        next_url = self.driver.find_elements_by_xpath("//a[@class='shark-pager-next']")
        next_url = next_url[0] if len(next_url)>0 else None
        return content_list,next_url
 
    def save_content_list(self,content_lsit):#保存
        for content in content_lsit:
            print(content)
 
    def run(self): #实现主要逻辑
        #1. start_url
        #2. 发送请求,获取响应
        self.driver.get(self.start_url)
        #3. 提取数据
        content_list,next_url = self.get_content_list()
        #4.保存
        self.save_content_list(content_list)
        # 5. 下一页数据的提取
        while next_url is not None:
            next_url.click() #页面没有完全加载完,会报错
            time.sleep(3)
            content_list,next_url = self.get_content_list()
            self.save_content_list(content_list)
 
 
if __name__ == '__main__':
    douyu = DouYu()
    douyu.run()

2. 网易云音乐爬虫

完成网易云音乐的所有列表的名字和url地址 地址:网易云音乐

2.1 思路分析:

  1. 确定程序入口的位置

  2. 确定首页数据的位置和url地址

  3. 实现翻页和程序停止的判断

2.2 参考代码

from selenium import webdriver
import time
 
 
class CloudMuisc():
 
    def __init__(self):
        self.start_url = 'http://music.163.com/#/discover/playlist'
        self.driver = webdriver.Chrome(executable_path='/home/worker/Desktop/driver/chromedriver')
 
    def get_content_list(self): #提取数据
        # 切入frame标签
        login_frame = self.driver.find_element_by_id('g_iframe')  # 根据id定位 frame元素
        self.driver.switch_to.frame(login_frame)  # 转向到该frame中
 
        li_list = self.driver.find_elements_by_xpath('//*[@id="m-pl-container"]/li')
        print(len(li_list))
        content_list = []
        for li in li_list:
            item = {}
            item["title"] = li.find_element_by_class_name('msk').get_attribute("title")
            item["href"] = li.find_element_by_xpath('.//a').get_attribute("href")
            # print(item)
            content_list.append(item)
 
        #提取下一页的元素
        page_url_list = self.driver.find_elements_by_xpath('.//div[@class="u-page"]/a')
        next_url = page_url_list[-1] if len(page_url_list)>0 else None
        return content_list, next_url
 
    def save_content_list(self,content_lsit):#保存
        for content in content_lsit:
            print(content)
 
    def run(self): #实现主要逻辑
        #1. start_url
        #2. 发送请求,获取响应
        self.driver.get(self.start_url)
        time.sleep(3)
        #3. 提取数据
        content_list, next_url = self.get_content_list()
        #4.保存
        self.save_content_list(content_list)
        # 5. 下一页数据的提取
        while next_url is not None:
            js = 'window.scrollTo(0,document.body.scrollHeight)'  # js语句:滚动到页面最底部
            self.driver.execute_script(js)  # 执行js的方法
            print(next_url.get_attribute('href'))
            next_url.click() #页面没有完全加载完,会报错
            time.sleep(3)
 
            # 此时在iframe标签中 代码逻辑需要我们先切出
            windows = self.driver.window_handles
            self.driver.switch_to.window(windows[0])
 
            content_list, next_url = self.get_content_list()
            self.save_content_list(content_list)
 
        # 6. 退出driver
        self.driver.quit()
 
 
if __name__ == '__main__':
 
    spider = CloudMuisc()
    spider.run()

selenium小项目实践_ arthur的博客-CSDN博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python Selenium4是一个用于自动化测试的工具,可以模拟用户在网页上的操作,比如点击、输入、提交表单等。以下是一个简单的Python Selenium4项目实践代码示例: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 创建Chrome浏览器实例 driver = webdriver.Chrome() # 打开网页 driver.get("https://example.com") # 查找网页元素 element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "element_id")) ) # 操作网页元素 element.click() element.send_keys("example") element.submit() # 获取网页内容 print(driver.page_source) # 关闭浏览器实例 driver.quit() ``` 以上代码首先导入了必要的模块,包括`webdriver`、`By`和`WebDriverWait`等。然后创建了一个Chrome浏览器实例,并打开了目标网页。接着使用`WebDriverWait`等待目标元素加载完成,然后执行了一系列操作,比如点击、输入和提交等。最后通过`driver.page_source`获取了网页的源代码,并打印输出。最后使用`driver.quit()`关闭浏览器实例。 这只是一个简单的示例,实际项目中可能会更加复杂,需要根据具体需求进行适当的修改和扩展。通过使用Python Selenium4,可以方便地进行网页自动化测试,并且具有丰富的API和功能,可以满足日常测试的各种需求。 ### 回答2: Python Selenium是一个强大的自动化测试工具,可以用于Web应用的测试和爬虫项目Selenium 4是Selenium的最新版本,增加了一些新特性和改进。 以下是一个Python Selenium 4项目实践的代码示例: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 设置Chromedriver的路径 chrome_driver_path = '/path/to/chromedriver' # 创建一个Chrome浏览器的实例 driver = webdriver.Chrome(executable_path=chrome_driver_path) # 打开一个网页 driver.get('https://www.example.com') # 使用显式等待等待某个元素加载完成 wait = WebDriverWait(driver, 10) element = wait.until(EC.presence_of_element_located((By.ID, 'element_id'))) # 进行一些操作,比如点击按钮、输入文本等 button = driver.find_element(By.XPATH, '//button') button.click() input_box = driver.find_element(By.ID, 'input_box') input_box.send_keys('Hello, World!') # 获取网页的标题和内容 title = driver.title content = driver.page_source # 关闭浏览器 driver.quit() ``` 以上代码演示了一个简单的使用Selenium 4的项目实践。首先,需要下载并设置Chrome浏览器的驱动路径。然后,创建一个Chrome浏览器的实例,打开一个网页。使用显式等待等待页面上的某个元素加载完成。接着,进行一些操作,比如点击按钮、输入文本等。最后,获取网页的标题和内容,最后关闭浏览器。 这只是一个示例,实际的项目中可能需要更多的操作和逻辑。使用Selenium 4可以实现更多的功能,比如截图、处理弹窗、执行JavaScript等。通过深入研究Selenium 4的文档和相关资源,可以更好地实践Python Selenium项目

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值