使用selenium爬取登录网站获取多页电影信息

文章目录

一、目标

模拟登录https://login2.scrape.center,登录成功后爬取网站电影信息:影片名和评分,将结果保留至文件中。

用户名和密码均为admin。

二、使用步骤

1.引入库

引用selenium库,使其操控

代码如下:

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
from selenium.webdriver.common.keys import Keys
from selenium.webdriver import ActionChains
from lxml import etree
import pandas as pd
import time
import random

2.编写函数

登录函数

def get_page(url, user, password):
    driver.get(url)
    driver.maximize_window()
    #查找用户名输入框
    input_name = wait.until(EC.presence_of_element_located((By.XPATH, "//input[@class='el-input__inner']")))
    input_name.send_keys(user)
    #查找密码输入框
    input_password = wait.until(EC.presence_of_element_located((By.NAME, "password")))
    input_password.send_keys(password)
    #查找登录按钮
    login_btn = wait.until(EC.presence_of_element_located((By.XPATH, "//input[@class='el-button el-button--primary']")))
    login_btn.click()
    time.sleep(10)
    return driver.page_source 

网页解析(使用xpath解析)

def parse_page(html):
    dom = etree.HTML(html)
    file = dom.xpath("//h2/text()")
    rating_str = dom.xpath("//p[@class='score m-t-md m-b-n-sm']/text()")
    rating = [i.strip() for i in rating_str]
    data = pd.DataFrame({
        '影片名':file,
        '评分':rating
    })
    return data

 保留页面

def save_file(filename,data):
    data.to_excel(filename, index=False)
    print("保存成功!")

 主函数

if __name__ == '__main__':
    user = input("请输入用户名:")
    password = input("请输入密码:")
    # 登录地址
    url = "https://login2.scrape.center" 
    driver = webdriver.Chrome()
    wait = WebDriverWait(driver, 10)
    html = get_page(url, user, password)
    filename = "selenuim登录.xlsx"
    alldata = parse_page(html)
    for i in range(1,6):
        ac = driver.find_element_by_xpath("//i[@class='el-icon el-icon-arrow-right']")
        ActionChains(driver).move_to_element(ac).click(ac).perform()
        html = driver.page_source
        data = parse_page(html)
        alldata = alldata.append(data)
    save_file(filename,alldata)
    driver.close()

总结

本文简单介绍了如何使用selenium爬取页面

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值