爬取帆软FCRA题库__2019/8/12

通过缓存解决登陆机制

  1. 帆软很多页面只有登陆后才有查看权限,直接爬取只能返回 http://bbs.fanruan.com/ 主页面内容,先通过登陆账号后的缓存来解决爬虫登陆问题。
  2. 缓存目录通过打开浏览器调试模式查看:
    在这里插入图片描述

通过BeautifulSoup和正则表达式处理数据

1.每一个题目分类的后面地址的ptid不一样,可以通过修改ptid的值来改变获取地址
在这里插入图片描述
在这里插入图片描述
2. 直接爬下来 FCRA题库发现模块在被选择时class会变为 blue_selected ,没有选择的则是blue_unselected ,可以通过这个判定题目分类
在这里插入图片描述在这里插入图片描述
3. 每一题存在于<p><span></p></span>中,也可以通过调试模式中的Elements查看在这里插入图片描述

代码

# coding=utf-8

from urllib import request
import json
import time
from datetime import datetime
from datetime import timedelta
import re
from  urllib.request import urlopen
from bs4 import BeautifulSoup

# 获取数据,根据url获取
def get_data(url):
    headers = {
    #缓存获取的相关信息
        'Content-Type': 'text/html; charset=gbk',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36',
        'Cookie': '获取到的cookie'
        }
    req = request.Request(url, headers=headers)
    response = request.urlopen(req)
    if response.getcode() == 200:
        return response.read()
    return None

#处理数据
def parse_data(url):
    html = get_data(url)
        comments =str(html,'gbk')
        soup = BeautifulSoup(comments,'lxml')
        soup=str(soup)
        #匹配爬取的对应分类,用作标题
        pattern2 = re.compile(r'<li.*?class=\"blue_selected\"><a.*?href=\"plugin.php\?id=threed_index:timulist&amp;ptid=(.*?)</a></li>',re.S)
        title=re.findall(pattern2,soup)
        #匹配试题
        pattern1 = re.compile(r'<p><span>(.*?)</span></p>',re.S)
    content=re.findall(pattern1,soup)
    #将获取到的数据写入文档
    with open('E:/PycharmProjects/cshiti.txt', 'a+', encoding='utf-8') as f:
        f.write('\n'+str(title)+'\n')
        m=0
        for item in content:
            m=m+1
            f.write(str(m)+'.'+item+'\n')

if __name__ == '__main__':
    for i in range(2,16):
        url = 'http://bbs.fanruan.com/plugin.php?id=threed_index:timulist&ptid='+str(i)
        parse_data(url)
        #还有一个直接重新爬吧,暂时不知道怎么加到循环语句中去
        url2= 'http://bbs.fanruan.com/plugin.php?id=threed_index:timulist&ptid=27'
        parse_data(url)

爬取结果

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值