使用selenium登录网站并爬取数据保存到excel

使用selenium模拟登录到网站后,利用requests爬取数据,用bs4解析数据,用xlwt保存到excel。

自定义了2个函数:getData()用于获取数据,使用for循环获取多个页面的数据,解析后的数据保存到列表中;saveData(datalist, savepath)用于保存数据,参数datalist是保存的数据,参数savepath是保存的路径,写入数据时使用了双重循环。

from selenium import webdriver
import time
import requests
from bs4 import BeautifulSoup
import xlwt             # 电子表格操作模块

browser = webdriver.Chrome(r'C:\Users\guo\Desktop\renshe\chromedriver.exe')

headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
    }

browser.get('https://网址/register/#/login?_k=ax56bx')
browser.find_element_by_xpath('/html/body/div/div/div/div[2]/div/div[2]/div[1]/div[2]/form/div[3]/span[2]/input').send_keys('用户名')
browser.find_element_by_xpath('/html/body/div/div/div/div[2]/div/div[2]/div[1]/div[2]/form/div[4]/span[2]/input').send_keys(',密码')
time.sleep(1)
browser.find_element_by_xpath('/html/body/div/div/div/div[2]/div/div[2]/div[1]/div[2]/form/div[6]/button[1]').click()
time.sleep(1)

def getData():      # 获取数据函数
    datalist = []         # 总的数据列表
    for i in range(1,65):
        url = 'https://网址/ApplyCollegeNew?page='+str(i)
        page_text = requests.get(url=url, headers=headers, timeout=10).text
        # 实例化bs对象,加载页面源码
        soup = BeautifulSoup(page_text, 'lxml')
        # 数据解析,返回列表[]
        li_list = soup.select('#collegesLists > li')
        # 循环列表
        for li in li_list:
            data = []   # 定义列表,用于保存每一行的数据
            title=li.select('.collegeFeature >h3>a')[0].string
            data.append(title)
            detail=li.select('.collegeFeature')[0].text
            data.append(detail)
            datalist.append(data)  # 将每行列表添加到总列表

    return datalist

def saveData(datalist, savepath):
    print('save....')
    book = xlwt.Workbook(encoding='utf-8')
    sheet = book.add_sheet('大学列表', cell_overwrite_ok=True)
    col = ('学校名称', '其他说明')
    # 表头字段名的写入
    for i in range(0, len(col)):            # 元组是不可变的,len取长度
        sheet.write(0, i, col[i])     # 列名
    # 数据记录的写入
    for i in range(0, len(datalist)):       # 使用len(列表)获得长度
        data = datalist[i]
        for j in range(0, len(data)):
            sheet.write(i+1, j, data[j])
    book.save(savepath)
    print('save ok....')

if __name__ == "__main__":
    savepath = '大学数据.xls'
    datalist = getData()
    saveData(datalist, savepath)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值