## 这是哪一题?

每当遇到一个新的题目,也许似曾相识、也许从未见过,无论什么情况,尤其在c语言网参加比赛时,为了更快的找到此题的原始题号,往往颇费周折:如果感觉这题做过,首先,根据新题的某些关键字,调用题库的“题目搜索”功能,希望关键字就在题目里,可惜大多数题目与内容的差别很大,常常找不到;于是,又要求助于搜索引擎,把站名、题目的来源、内容里的部分文字都一一罗列出来,才有可能让网络“猜”到这到底是哪一题,题目是什么?很不巧的是,搜索引擎对此也无能为力。

为了搜索到匹配信息,该怎么办呢,有办法,比如在每次做题的时候,伴随代码,把题目和内容也粘贴到代码文件里,在本地搜索就方便多了。

可是目前在本地都做了快2000题了,大部分代码文件都只能匹配题号,没有需求描述,如果不想重做这些题,该怎么找?难道要重新访问这2000个页面,把题目描述一个个地粘贴到代码文件中?不!这不是程序员的做法,真正的程序员可以让机器来完成,让爬虫来实现!

## 怎样获取离线题库

直接看代码:

```python

#!/usr/bin/env python3

# -*- coding: UTF-8 -*-

import os

import requests

url_prefix = "https://www.dotcpp.com/oj/problem"

url_suffix = ".html"

url_num = 1000

while url_num <= 2400:

url = url_prefix + str(url_num) + url_suffix

r = requests.get(url)

r.encoding = "utf-8"

fo = open(str(url_num) + url_suffix, "w+")

fo.write(r.text)

fo.close()

url_num+=1

```

如果没有requests可以搜索到相关文档介绍怎么安装,可以看到,本站题库的URL都有相同的前缀和后缀,所不同的只是其中的序号:从1000到2400,一共1401题,爬取后,可以保存成1401个离线HTML文件,再根据内容去搜索就方便多了。

在爬取过程中,发现每保存500页需要2分钟左右,根据不同的网络状况和机器速度,需要的时间可能会有所不同,整个离线题库当下来不会超过10分钟吧!

那么整个题库有多大?如图所示,不超过45MB:

![离线题库的大小](/image_editor_upload/20201109115521_62273.png "离线题库的大小")

请求到的网页文件效果如何:

![离线题库的效果](/image_editor_upload/20201109115803_69201.png "离线题库的效果")

## 如何搜索离线题库

虽然爬取的网页失去了原来的样式,但是效果不是问题,只要能搜索到题目描述信息就行,比如要搜索包含关键词“寂寞”的题目,进入离线题库所在的目录,在Linux系统里直接用一行命令:

`grep -n '寂寞' *`

![搜索离线题库](/image_editor_upload/20201110120222_43650.png "搜索离线题库")

是不是找到了蛛丝马迹,是的,那一题很可能就是第1625题,搜索成功。

0.0分

2 人评分

python爬取网页题库_用Python爬取本站离线题库相关推荐

  1. python request 等待网页加载_用Python开发爬虫,看这篇文章就够了

    现在Python语言大火,在网络爬虫.人工智能.大数据等领域都有很好的应用.今天我向大家介绍一下Python爬虫的一些知识和常用类库的用法,希望能对大家有所帮助. 其实爬虫这个概念很简单,基本可以分成 ...

  2. python爬取网页实时数据_使用 Python 爬取网页数据

    1. 使用 urllib.request 获取网页 urllib 是 Python 內建的 HTTP 库, 使用 urllib 可以只需要很简单的步骤就能高效采集数据; 配合 Beautiful 等 ...

  3. python爬取网页数据流程_基于Python爬取fofa网页端数据过程解析

    FOFA-网络空间安全搜索引擎是网络空间资产检索系统(FOFA)是世界上数据覆盖更完整的IT设备搜索引擎,拥有全球联网IT设备更全的DNA信息.探索全球互联网的资产信息,进行资产及漏洞影响范围分析.应 ...

  4. python爬取学校题库_利用Python轻松爬取网页题库答案!教孩子不怕尴尬了!

    大家有没有遇到这种令人尴尬的情况:"好不容易在网上找到需要的资源数据,可是不容易下载下来!"如果是通过一页一页的粘贴复制来下载,真的让人难以忍受,特别是像我这种急性子,真得会让人窒 ...

  5. python爬取网页公开数据_如何用Python爬取网页数据

    使用Python爬取网页数据的方法: 一.利用webbrowser.open()打开一个网站:>>> import webbrowser >>> webbrowse ...

  6. 编程python爬取网页数据教程_实例讲解Python爬取网页数据

    一.利用webbrowser.open()打开一个网站: >>> import webbrowser >>> webbrowser.open('http://i.f ...

  7. 用python输出所有的玫瑰花数_用Python爬取WordPress官网所有插件

    转自丘壑博客,转载注明出处 前言 只要是用WordPress的人或多或少都会装几个插件,可以用来丰富扩展WordPress的各种功能.围绕WordPress平台的插件和主题已经建立了一个独特的经济生态 ...

  8. 用python爬取qq空间内容_用python爬取QQ空间

    原博文 2016-11-18 17:19 − 好久没写博文了,最近捣鼓了一下python,好像有点上瘾了,感觉python比js厉害好多,但是接触不久,只看了<[大家网]Python基础教程(第 ...

  9. python 循环定时器 timer显示数据_【Python】多线程、定时循环爬取优信二手车信息...

    爬虫 爬取优信二手车:循环遍历每页,获取相应的有价值字段信息,这里不详细阐释了. 多线程 Python中,使用concurrent.futures模块下的ThreadPoolExecutor类来实现线 ...

  10. python爬虫用什么电脑好_【Python】【爬虫】最近想买电脑,用Python爬取京东评论做个参考...

    最近想换电脑,又有点不确定买哪一款.所以决定爬取京东上电脑评论,做个参考,并把最终结果绘制成词云图. 一.先来看下三款电脑评价的词云图 1 用Python爬取京东自营ThinkPad T490s的评论 ...

最新文章

  1. 使用Python,EoN模拟网络中的疾病扩散模型,并结合matplotlib绘图
  2. 【c语言】蓝桥杯入门训练 序列求和
  3. OSChina 周日乱弹 —— 来和养生的技术负责人决斗!
  4. Xamarin 2017.10.9更新
  5. NYOJ 28 大数阶乘
  6. 滑动窗口/二分 - 尽可能使字符串相等
  7. mysql 隔行记录_php mysql数据输出实现隔行变色的简单示例
  8. IntelliJ IDEA 2018.2.2远程调试Tomcat的配置方法
  9. [ExtJS6]ResponsiveColumn-自适应列布局
  10. HTML5与触摸界面
  11. CPU+GPU异构集群搭建的总结说明
  12. 顶隙计算公式_齿轮参数计算公式,这次终于整全了
  13. 矩形脉冲信号合成_实验10 矩形脉冲信号分解
  14. Chrome免安装版制作
  15. shape_predictor_5_face_landmarks.dat以及shape_predictor_68_face_landmarks.dat资源分享
  16. [ZJCTF 2019]EasyHeap-house of spirit
  17. 探索性数据分析-如何描述业务量数据
  18. 视频内容相似度视频数字版权 综述
  19. 打开UG10 C语言错误,UG打开prt文件UTF8归档报错:部件已以UTF8模式归档,但NX运行
  20. 浅析智慧消防物联网监管平台的应用

热门文章

  1. mapabc 国人推荐
  2. 匹配区县代码_省份、城市、区县三级联动Html代码
  3. sqliteman安装出现E: Unable to locate package sqliteman 解决办法
  4. 基于掷色子规则的c语言编程,掷骰子游戏-C语言
  5. goahead源码分析webs.c
  6. 服务器蓝屏显示3b,完美解决0x0000003B蓝屏故障的方法
  7. 心形函数表达式及合成思路
  8. 内网即时通讯软件有哪些优点?
  9. malloc函数详解以及例程
  10. xmapp教程及扩展