文章目录
一、目标
模拟登录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爬取页面