【原文链接】http://www.changxuan.top/?p=146

由于“打怪”失败,最近一直在牛客网上刷题复习备战春招。其中有个 Java专题复习题库,我刷着刷着就想把它爬下来!那么就开始吧。

页面是这个样子的,

列表页

详情页

分析网页链接,发现没有加密,例如第一题的详情页为:https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page=1 可以先自行构造链接,代码如下:

urls = ['https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page={}'.format(str(i)) for i in range(1,121)]

在选中要抓取的数据部分,右击【检查】,发现答案都在 class="design-answer-box" 标签内。使用谷歌浏览器插件 XPath helper 进行 Copy XPath ,“/html/body/div[1]/div[2]/div[2]/div[2]/div[1] ”。

测试结果

主要思路:

构造网页链接

编写爬虫函数(保存数据到文件)

for 循环进行调用函数

代码如下:

import requests

import time

from lxml import etree

header = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

'Accept-Encoding': 'gzip, deflate, br',

'Accept-Language': 'zh-CN,zh;q=0.8',

'Connection': 'keep-alive',

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 '

'(KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'

}

#/html/body/div[1]/div[2]/div[2]/div[2]/div[1]

f = open('./JavaPros.md','a+')

def get_info(url,n):

res = requests.get(url, headers=header)

selector = etree.HTML(res.text)

question = '##### '+str(n)+'、'+selector.xpath('/html/body/div[1]/div[2]/div[2]/div[1]/div[2]/text()')[0].lstrip('\n')+'\n'

answer = selector.xpath('/html/body/div[1]/div[2]/div[2]/div[2]/div[1]//text()')

answer = "".join(answer)

answer = '```\n'+answer.lstrip('\n')+'\n```\n'

f.write(question+answer)

if __name__ == '__main__':

urls = ['https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page={}'.format(str(i)) for i in range(1,121)]

i = 1;

for url in urls:

print(url)

get_info(url,i)

i = i + 1

time.sleep(1)

f.close()

结果:

数据文件

python爬取学校题库_如何使用 Python 爬虫爬取牛客网 Java 题库?相关推荐

  1. 如何使用 Python 爬虫爬取牛客网 Java 题库?

    [原文链接]http://www.changxuan.top/?p=146 由于"打怪"失败,最近一直在牛客网上刷题复习备战春招.其中有个 Java专题复习题库,我刷着刷着就想把它 ...

  2. 牛客网---Java题库(21~30)

    21.lterator和Listlterator的区别是什么? literator可用来遍历Set和List集合,但是Listlterator只能用来遍历List. Iterator对集合只能是前向遍 ...

  3. 牛客网---Java题库(11~20)

    11.进程和线程的区别是什么? 1.地址空间和其他资源:进程间相互独立,同一进程的各线程间共享. 2.通信:进程间通信PIC,线程间可以直接读写进程数据段(如全局变量)来进行通信(需要通过进程同步和互 ...

  4. 牛客网---Java题库(1~10)

    1.什么是JAVA虚拟机?为什么JAVA被称作平台无关的编程语言? java虚拟机是一个可以执行java字节码的虚拟机进程.java源文件被编译成能够java虚拟机执行的字节码文件.java被设计成允 ...

  5. 牛客网-SQL题库笔记

    牛客网-SQL题库笔记 01.最晚入职员工的所有信息 02.查找入职员工时间排名倒数第三的员工所有信息 03.查找各个部门当前领导当前薪水详情以及其对应部门编号 04.查找所有已经分配部门的员工的la ...

  6. 牛客网sql题库(1-30题)—— 个人答案与过程解析

    本篇博客分享一下我在牛客网sql题库刷题时,自己敲出来的结果.结果均通过了牛客网的结果验证. 具体的题目就不放在博客中了,感兴趣可以自行去搜索牛客网,找到sql题库在线编程 每道题下面都有我自己写的题 ...

  7. Python 牛客网编程题输入用例问题

    Python 牛客网编程题的输入用例 前言 切入正题 输入字符串 输入整数 输入列表 后记 前言 在牛客网刷题的时候,发现明明在python本地编译器能够轻松解决的输入用例问题,到牛客网在线编译就得好 ...

  8. 牛客网刷题之SQL篇:非技术快速入门39T

    导航 前序 一.简单的关键字练习 1-10 二.知识点复习之 ==运算符== 1.算数运算符 2.比较运算符 3.逻辑运算符 4.位运算符 三.10-28T 0.简单题总结 1. SQL18 ==分组 ...

  9. Java算法:牛客网Java版剑指Offer全套算法面试题目整理及电子档,Java算法与数据结构面试题,面试刷题、背题必备!牛客网剑指offer

    剑指offer(java版) 牛客网Java版剑指Offer全套题目67道 资源来源于网络 目录 1.二维数组中的查找 2.替换空格 3.从尾到头打印链表 4.重建二叉树 5.用两个栈实现队列 6.旋 ...

最新文章

  1. 第 22 章 DDL - Data Definition Language
  2. C# 重写WndProc及发送消息
  3. P3345 [ZJOI2015]幻想乡战略游戏
  4. mockito_Mockito和Hamcrest的试驾制造商
  5. 【Python】Pygame模块设计游戏
  6. dll放在unity哪个文件夹下_unity调用C#dll文件
  7. 关于二叉树,你该了解这些!
  8. android版 wifi伴侣,wifi伴侣下载|wifi伴侣安卓版2016最新版 3.7.5 - 系统天堂
  9. 【HTML——电脑病毒 特效(效果+代码)】
  10. matlab三维货位图,基于matlab立体仓库静态货位分配优化及仿真
  11. P15 实战:Kaggle房价预测
  12. Python代码画喜羊羊怎么画_Python画图的这几种方法,你学会了吗
  13. PC端浏览器自动填充账号密码输入框问题该如何解决?
  14. 如何用python进行相关性分析_Python 相关性分析 显著性检验
  15. win2003 64位系统IIS6.0 32位与64位间切换
  16. 自定义firefox背景色(豆绿色)
  17. 淘宝网店如何提升无线端宝贝权重,抢占更多无线流量?
  18. ajax的各个参数详细讲解
  19. 前端上传预览文件以及下载,node后端存储文件以及返回前端文件流下载
  20. C++第三方日志库Pantheios

热门文章

  1. Vivado Logic Analyzer中VIO核的使用
  2. RS232与RS485的功能与区别!
  3. 隔空操作之隔空下象棋
  4. 世界上将出现一种新职业
  5. deepin V20 启用Nvidia驱动方法
  6. 1503 - A PRIMARY KEY must include all columns in the table's partitioning function
  7. 路由协议OSPF知识点汇总
  8. LastPass 释出安全更新修复高危漏洞
  9. ABP官方文档翻译 6.1.1 MVC控制器
  10. Html转义字符列表