python网络爬虫实战之爬取OJ所有问题信息

OJ系统爬虫总结 背景 最近导师让我帮他把OJ系统上的学生代码导出来,怎知系统并没有一键导出的功能,无奈只能对着百度众多繁杂的教程咬咬牙爬虫,折腾了1天半总算搞出来交差了。 需求 1.提取验证码 2.模拟登陆 3.提取学生账号(学号)stuID、运行编号runID、题目编号pID.,构成学生代码提交页面的链接link 4.根据链接link提取学生提交的代码 5.匹配merge学号和学生姓名 6.保存... 阅读详情

更多爬虫内容请关注博主的专栏python3网络爬虫

import requests
from bs4 import BeautifulSoup
import re

'''
    @author: Face_to_sun
    @modify:2018-12-01

'''
def getHTMLText(url, page):
    headers = {
        'Host': 'acm.cug.edu.cn',
        'Referer': 'http://acm.cug.edu.cn/',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.62 Safari/537.36'
    }
    data = {
        'page': str(page)
    }
    try:
        url = url + str(page)
        response = requests.get(url, headers=headers, data=data)
        response.raise_for_status();
        response.encoding = 'utf8'
        print(url)
        return response.text
    except:
        return "产生异常"

# def getHead(soup):
#     thead = soup.find_all(name='tr', class_='toprow')
#     for tr in thead:
#         ths = tr.find_all('th')
#         for th in ths:
#             print(th.string)

def getBody(soup):
    problem = {}
    # table = soup.find_all(name='table', id=problemset)
    table = soup.find_all(id="problemset")
    for i in table:
        tbody = i.find_all('tbody')
    for body in tbody:
        trs = body.find_all('tr')
        for tr in trs:
            tds = tr.find_all('td')
            problem['Bool'] = tds[0].get_text()
            problem['problem ID'] =tds[1].get_text()
            problem['Title'] = tds[2].get_text()
            problem['Source/Category'] = tds[3].get_text()
            problem['AC'] = tds[4].get_text()
            problem['Submit'] = tds[5].get_text()
            if int(tds[5].get_text()) == 0:
                problem['Accuracy rate'] = 0
            else:
                problem['Accuracy rate'] = int(tds[4].get_text())/int(tds[5].get_text())
            print(problem)

if __name__ == "__main__":
    url = 'http://acm.cug.edu.cn/problemset.php?page='
    for i in range(1,13):
        html = getHTMLText(url, i)
        # with open('problem.html', 'w', encoding='utf8') as f:
        #     f.write(html)
        #error: python编码问题——解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX
        soup = BeautifulSoup(html,'lxml')
        # getHead(soup)
        getBody(soup)

运行结果
在这里插入图片描述

Python实现一个简单的爬虫程序(爬取图片) 进入spiders目录,创建baiduSpider.py,域名是要爬取的网站,写错了就无法爬取图片。首先查看请求的URL:在图片搜索框中输入”壁纸“,鼠标往下滚动,可以看到右侧”网络“中多次发送请求,响应中的”data“即是搜索出来的图片。百度搜索出来的图片是动态的,随着鼠标的动作自动发送下一页的请求,本文的目的是快速写出一个爬虫程序,实现爬取功能,所以在此忽略一些技术细节,不仔细去分析它的请求机制。首先贴出baiduSpider.py完整代码,一共30多行代码,就能实现自动爬取30张图片的功能。 阅读详情

相关推荐

(Python)实战解析:绕过iframe限制,高效爬取校内OJ习题库

本文详细介绍了如何使用Python绕过iframe限制,高效爬取校内OJ(如NOJ)习题库。通过分析页面结构、逆向工程URL模式,并构建完整的爬虫解决方案,帮助开发者快速获取题目内容,提升刷题效率。文章还涵盖了性能优化、反爬机制应对及实际应用中的注意事项。

weixin_30505225的博客 844

Python爬虫练习(爬取OJ题目和学校信息通知)

爬取OJ题目和学校信息通知一、爬取南阳理工OJ题目1. 初步分析2. 代码编写 一、爬取南阳理工OJ题目 爬取网站:http://www.51mxd.cn 1. 初步分析 通过切换页数可发现,第n页网址为: http://www.51mxd.cn/problemset.php-page=n.htm 我们需要爬取其题号,难度,标题,通过率,通过数/总提交数: 右击查看网页源代码: 在其中 Ctrl + F 搜索该页的某一个题目(此处以三国志为例): 能够搜索到,说明此数据不

Baker的博客 4129

最新Python爬虫实战(入门爬虫篇)——案例2:根据关键字爬取图片批量下载到本地(附上完整爬虫代码)

本次案例通过Python爬虫技术实现了图片的批量下载。代码采用模块化设计,函数实现cookies的自动解析,简化了配置流程,涵盖请求、解析、存储的完整流程。学习重点包括:抓包工具定位数据源、分页参数分析(pn和gsm)、正则表达式匹配图片链接、模拟请求头绕过反爬机制、以及自动化文件管理。需要注意控制请求频率并遵守网站使用规范,适用于入门爬虫实践。

努力让自己发光,对的人才能迎着光而来 19万+

用python爬取杭电oj的数据

暑假集训主要是在杭电oj上面刷题,白天与算法作斗争,晚上望干点自己喜欢的事情! 首先,确定要爬取哪些数据: 如上图所示,题目ID,名称,accepted,submissions,都很有用。 查看源代码知: 所有的数据都在一个script标签里面。 思路:用beautifulsoup找到这个标签,然后用正则表达式提取。 话不多说,上数据爬取的代码: import request...

weixin_30535843的博客 788

利用Python登录学校OJ爬取AC代码

之前用Python爬取了Toj的题目主干——简单Python爬虫练习,并以此作为Python爬虫的入门实验,待我Python能力有所长进后,就想到或许可以使用Python把自己之前提交的AC代码全部爬下来,这也许会很有趣。

STM32智能头盔DIY全攻略:从心率监测到跌倒报警的完整实现

本文提供了基于STM32的智能头盔完整DIY实现方案,涵盖从心率监测到跌倒报警的核心功能。详细解析了系统设计、硬件搭建、软件算法及系统联调,重点介绍了STM32主控、MAX30102心率传感器和MPU6050姿态传感器的应用,并分享了跌倒检测算法与功耗优化等实战经验,为嵌入式开发与物联网创新项目提供全面指导。

sony5的博客 498

2021-11-16

爬取OJ题目和重交信息通知一、爬取南阳理工OJ题目1.初步分析2.代码编写二、爬取学校信息通知2.每页内容爬取三、总结 一、爬取南阳理工OJ题目 1.初步分析 爬取网站:http://www.51mxd.cn/ 爬取信息:我们需要爬取其题号,难度,标题,通过率,通过数/总提交数: 右击查看网页源代码: 在其中Ctrl + F 搜索该页的某一个题目(此处以红黑树为例): 能够搜索到,说明此数据不是动态加载,可直接get该页面以获取!! 按F12 打开开发者工具,在Element中点击箭头工具(如下图②

weixin_50909683的博客 801

BERT之提取特征向量 及 bert-as-server的使用

本文内容列表提取句向量1、句向量简介1-1传统句向量1-2、BERT句向量2、 extract_features.py源码分析2-1 main函数 前一篇文章 BERT介绍及中文文本相似度任务实践 简单介绍了使用BERT进行中文文本相似度计算的方法,这篇文章着重对特征提取方法进行讲述。 提取句向量 1、句向量简介 1-1传统句向量 更多采用word embedding的方式取加权平均,该方法的一大...

ling620的专栏 1万+

【网络爬虫】网络爬虫之入门练习

目录一、网络爬虫基本介绍二、爬取南阳理工OJ题目1. 网页分析2. 内容爬取三、爬取重交新闻通知1. 网页分析2. 内容爬取四、总结五、参考 一、网络爬虫基本介绍   网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。   简单来说就是通过编写脚本模拟浏览器发起请求获取数据。爬虫从初始网页的URL开始, 获取初始网页上的URL,在抓取网页的过程中,不断从当前页面抽取新的url放入队列。直到满足系统给定的停止条件才停

YangMax1的博客 6521

嵌入式Linux Qt应用程序卡死问题分析记录

根据应用和系统层面的分析,软件功能异常和卡死现象的原因是系统控制台/dev/console阻塞导致依赖其的相关应用和命令异常。系统控制台/dev/console阻塞的原因还未确定,最近的软件版本和其他测试同事未出现该问题,所以很大可能是串口线的问题,待后续有进展了继续更新。

V10_x的博客 1635

STM32F407+LWIP实战:NETCONN接口TCP服务器避坑指南(附正点原子例程解析)

本文深入解析了基于STM32F407和LWIP协议栈构建高响应TCP服务器的实战要点。针对使用NETCONN接口时常见的连接不稳定、数据延迟及内存泄漏等问题,提供了从NETCONN运行模型、服务器实现、参数优化到内存管理的全方位避坑指南,并结合正点原子例程,给出了具体的调试技巧与解决方案。

weixin_29188043的博客 402

Python编写网页爬虫爬取oj上的代码信息

OJ升级,代码可能会丢失. 所以要事先备份. 一开始傻傻的复制粘贴, 后来实在不能忍, 得益于大潇的启发和聪神的原始代码, 网页爬虫走起!  已经有段时间没看Python, 这次网页爬虫的原始代码是 python2.7版本, 试了一下修改到3.0版本, 要做很多包的更替,感觉比较烦,所以索性就在这个2.7版本上完善了.  首先观赏一下原始代码,我给加了一些注释:  # -*-

LTianchao的专栏 2747

逆向实战:TikTok X-Gorgon算法解析与Unidg补环境技巧

本文详细解析了TikTok X-Gorgon算法的逆向工程全流程,包括参数定位、变种RC4算法还原及Unidbg补环境技巧。通过动态调试与静态分析相结合,揭示了X-Gorgon的生成逻辑和加密细节,为移动安全研究提供了实用指南。

weixin_28568819的博客 692

利用python爬虫抓取OJ上做题信息(终结版)

import webbrowser import re import urllib #获取hdu网页 def getHtml_hdu(url): page = urllib.urlopen(url) html = page.read() #unicodehtml = html.decode("utf-8") #return unicodehtml retu

bobopeng 4567

【1】Python交叉编译到OpenHarmony标准系统运行(arm32位)

本文介绍如何Python语言如何在OpenHarmony标准系统运行,包括5.0r和4.1r以及4.0r,和未来版本的OpenHarmony版本上。 Python语言在OpenHarmony上使用,需要将Python解释器CPython移植到OpenHarmony标准系统。通过交叉编译的方式。

weixin_58069108的博客 927

彩票的未来:基于人工智能与大数据的创新预测模型

随着人工智能(AI)和大数据技术的迅猛发展,彩票行业正面临前所未有的变革。本文将探索如何通过结合深度学习、机器学习和数据挖掘技术,构建先进的预测模型,以提高彩票开奖结果的预测准确性。通过分析历史数据、应用现代化的计算技术,我们提出了一种创新的彩票预测软件架构,旨在推动彩票行业向着更加智能和高效的方向发展。

Sapphire521的博客 1439

Python爬虫练习

文章目录一、 软件配置二、爬取南阳理工OJ题目(一)页面分析(二)代码编写三、爬取学校信息通知(一)页面分析(二)代码编写总结参考 一、 软件配置 安装必备爬虫环境软件 python 3.8 pip install requests pip install beautifulsoup4 二、爬取南阳理工OJ题目 网站地址:http://www.51mxd.cn/ (一)页面分析 切换页面的时候url网址发生变动,因此切换页面时切换第n页则为n.html 根据页面数据显示可以查看到只有题号、难度、

m0_59416558的博客 4780

HQChart实战教程54:Renko砖形K线图实现详解

Renko图(砖形图)起源于日本,只关注价格变动而忽略时间和成交量因素: 2.2 算法说明 初始化:使用第一根K线的收盘价创建第一个砖块 变动检测:计算当前价格与最后一个砖块的差值 砖块生成: 当价格变动≥砖块大小时,生成新砖块 当价格变动不足时,更新当前砖块的高低价 方向判断:根据价格变动方向确定砖块颜色 三、完整实现代码 四、Renko图的高级应用 4.1 动态砖块大小调整 4.2 Renko交易策略 三砖反转策略:趋势跟踪策略:本文详细介绍了Renko图的实现原理和在HQChart中的应

QQ_778132974的博客 871

利用python爬虫大量爬取网页图片

最近要进行一类图片的识别,因此需要大量图片,所以我用了python爬虫实现 主要参考:https://www.cnblogs.com/franklv/p/6829387.html 爬取网页:https://www.ivsky.com/search.php?q=罂粟花 库介绍:https://www.cnblogs.com/mzc1997/p/7813801.html https://blog.cs...

耶律大石的博客 9505

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

python爬虫的爬取图片代码

import reimport os导如运行环境所需的包。

qq_75102220的博客 3359

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

python爬取的代码_用Python编写网页爬虫爬取oj上的代码

用Python编写网页爬虫爬取oj上的代码2018-03-12 14:02:101424浏览今天我们给大家讲解一下关于Python爬取网页的源代码,直接是干货,在代码中有不足之处,或者专业的Python高级开发程序员大神有更便捷的方式,我们可以共享。#-*-coding:cp936-*-importurllib2importurllibimportreimportthreadimporttimei...

weixin_39876282的博客 297

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

爬虫入门——爬取OJ题目和学校信息通知

一、爬取南阳理工学院ACM题目 二、爬取学校信息通知 三、总结 参考文章 Python爬虫练习(爬取OJ题目和学校信息通知)

y000827的博客 889

网络爬虫入门【网络通信编程】

目录 一 爬虫 二 爬取南阳理工OJ题目 1. 网页分析 2. 内容爬取 三、爬取重交新闻通知 1. 网页分析 2. 内容爬取 四 总结 五 参考链接 一 爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。 优点: 只要是浏览器(客户端)能做的事情,爬虫都能够做。 准备工作: 首先我们需要下载python,我下载的版本是 3.8.8 其次我们需要一个运行Python的环境,我用的...

qq_52445967的博客 296

《Python网络爬虫从入门到实践》实现深圳租房信息抓取

爬取网站:https://zh.airbnb.com/s/Shenzhen--China?page=1 1.点击下部显示全部按钮,将租房信息全部显示 2.设置循环,一页一页获取 3.查看网页源码,寻找标签 __author__ = 'Administrator' from selenium import webdriver import time driver = webdriver....

你就是根号四的博客 690
上一篇: python加密编码之MD5
下一篇: python网络爬虫实战之下载笔趣看小说网小说
玄蛰
博客等级 码龄9年 89粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值