爬取驾校一点通所有科目一信息

前提、

1. 在这里我使用的是requests爬虫,因为题目过多所以,selenium的效率十分的低;
2. 这是一个异步请求,请认真的分析参数,不要以为这个很简单,否则你会掉进坑

坑和解析:

1.学会伪装:同一个IP和用户,大概请求250题目左右便会被封,推荐使用注册多个用户,保存cookie,做一个变量池,每请求一段时间更换头信息
2.地址参数分析:r,是一个1以内的随机浮点数,我为了找这个参数花了很长的时间,最后发现无用,id,参数是一个html页面一个JavaScript变量数组;
3.请注意分析lx.JS文件,你会发现上面题目的数组,被复制一份加入到一个list里面,再复制一份数组计入里面并且没有打乱,这一块请注意去重,使用正则匹配
4.返回的参数,图片底层做了映射,这一块,我简单的处理了,把所有名字后缀改为jpg,事实证明这个方法很有效

期望:

1.你开一个VIP,保存cookie,把里面的付费题目也爬下来吧,
2.为了一个更好的,请你找找JS,做到图片自动映射,我这个只能下载出JPG文件,如果遇到GIF文件便会下载不了,事实证明极少数题目是GIF文件
3.聊了这么久,请关注一下我的博客吧(感谢,应该会对你有用):https://blog.csdn.net/qq_41259576

源码:

  1. 不出意外的话复制皆可用
import pymysql
class SaveMysqlDate(object):
    
    '''控制变量区,如果需要自己参数请指定,'''
    def __init__(self,items,host='自己的IP',port=3306,user='自己的数据库',passwd='自己的密码',db='自己的数据库',charset='utf8'):
        self.__conn=pymysql.connect(host=host,port=port,user=user,passwd=passwd,db=db,charset=charset)
        self.__cur=self.__conn.cursor()
        self.__flag=set([True])
        self.__mysqlControl(items)
      
    '''储存控制区'''
    def __mysqlControl(self,items):
        try:
            self.dataPraise(items)
            self.__dataisNeedRollback()
        except Exception as e:
            print(e)
        
    
    '''数据回滚区'''
    def __dataisNeedRollback(self):
        try:
            if False in self.__flag:
                self.__conn.rollback()
                self.__conn.close()
                print('完整数据缺损,数据进行回滚,请检查!!!')
            else:
                self.__conn.commit()
                self.__conn.close()
        except Exception as e:
            print(e)
            self.__conn.close()
            
    
    '''数据插入区'''
    def insertList(self,sql,params):
        try:
            self.__cur.executemany(sql,params)
            self.__flag.add(True)
        except Exception as e:
            print(e)
            self.__flag.add(False)
            
    '''自定数据分析区'&
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值