爬取蓝桥杯试题及数据

博主分享了首次尝试爬取蓝桥杯试题及数据的经历,过程中遇到被封IP的问题。通过模拟登录、正则表达式筛选试题链接、BeautifulSoup解析源码等步骤实现爬取,但尚有两个问题未解决:如何在提交代码页面填充代码和如何自定义下载路径。目前采用不断打开和关闭浏览器的方式进行下载。数据存储结构为LQ文件夹下按难度划分试题文件夹,试题内部包含题目和评测数据。
摘要由CSDN通过智能技术生成

  这是本人写的第一个爬虫,由于测试的太多了,导致最终已经无法下载数据了,下载会提示error,无任何反反爬机制所以说被封应当是可以理解,因为无法再下载数据,估计要等一段时间,我暂时就把他搁下了,不过也学习到了很多东西,现在将其展示出来,请看官指点,同时也有几个问题没有解决

①:在提交代码的那个网页,不知道填上一段代码过去,本来想填Hello world的,期待以后能够解决把

②:目前还不知道如何处理点击下载,然后自定义路径的问题,不过现在用不断打开浏览器和退出每次设置解决

大致思路:

0.首先利用webdriver调用谷歌浏览器模拟登陆,注意下载的插件需要和谷歌浏览器版本一致

1.登陆完之后,模拟点击进入一个试题列表,然后利用正则表达式筛选出试题链接

2.利用cookies再次调用浏览器,进入试题,利用BeautifulSoup解析源码,然后去掉html格式(上面的小于号不能正常显示,因此也要特殊转码,</div>转换成换行符)

3.模拟点击提交,自动跳转网页后,点击评测详情,再解析网页看有多少组数据,模拟点击下载,之后关闭浏览器

4.存储格式,在LQ文件夹里面存储cookies,不同难度的试题分文件夹存储,题目再建立子文件夹内含题目和评测数据

from selenium import webdriver
from bs4 import BeautifulSoup
import time
import re
import os


# 给与driver, 账号,密码,然后输入相应的验证码即可,返回cookielist,用于后面免验证登陆
def Land(lq, url, login, psw):
    lq.get(url)
    lq.find_element_by_xpath('//*[@id="xloginbtn"]/img').click()
    # 模拟点击登陆
    lq.find_element_by_xpath('//*[@id="loginForm"]/div/div[1]/input').send_keys(login)
    lq.find_element_by_xpath('//*[@id="loginForm"]/div/div[2]/input').send_keys(psw)
    # 输入信息
    flag = True
    # 手动输入验证码登入,防止输错,成功登陆时输入0终止输入验证码,其余则继续输入
    print('请输入验证码:')
    vcode = str(input())
    while flag:
        lq.find_element_by_xpath('//*[@id="vcode"]').send_keys(vcode)
        lq.find_element_by_xpath('//*[@id="loginForm"]/div
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值