【Educoder作业】※网页抓取及信息提取

【Educoder作业】※网页抓取及信息提取

简易小爬虫?
偷偷告诉各位,前面题的答案都在后一道题里,所以其实我们只需要做第四题

T1 数据获取—分数线目录页

需要注意的是,w e b p a g e . r e a d ( ) webpage.read()w e b p a g e .r e a d ()出来并不是字符串,而是一个类文件,所以用d e c o d e decode d e c o d e将它转换类型,转成u t f − 8 utf-8 u t f −8就变成字符串了,我们就可以操作了。


import urllib.request as req
import os
import hashlib

url = 'http://www.gotonudt.cn/site/gfkdbkzsxxw/lqfs/index.html'
def step1():

    webpage = req.urlopen(url)
    webdata = webpage.read()
    webdata = webdata.decode('utf-8')

    outfile = open("nudt.txt", 'w')
    outfile.write(webdata)
    outfile.close()

T2 数据分析—提取历年分数线数据页链接

这个题的处理,在T 3 T3 T 3中给出的方法是硬查,我就用了一个w h i l e while w h i l e循环来找起点,其余没有区别。


import urllib.request as req

url = 'http://www.gotonudt.cn/site/gfkdbkzsxxw/lqfs/index.html'
webpage = req.urlopen(url)
webdata = webpage.read()
webdata = webdata.decode('utf-8')
def step2():

    urls = []

    pre = 'http://www.gotonudt.cn/'
    Gfkd = '国防科技大学'
    for i in range(2012, 2017) :
        mdl = Gfkd + str(i)
        idx = webdata.find(mdl)
        while webdata[idx : idx + 4] != 'href' :

            idx -= 1
        urls.append(pre + webdata[idx + 7 : idx + 47])

    return urls

T3 数据获取—获取历年分数线数据网页

这个题可以理解成T 1 T1 T 1和T 2 T2 T 2的结合,没有额外操作。

import urllib.request as req

url = 'http://www.gotonudt.cn/site/gfkdbkzsxxw/lqfs/index.html'
webpage = req.urlopen(url)
webdata = webpage.read()
webdata = webdata.decode('utf-8')
def step3():
    for year in range(2014, 2017):
        substr='国防科技大学'+str(year)+'年录取分数统计'
        index = webdata.find(substr)
        href = webdata[index - 80:index - 39]
        href = 'http://www.gotonudt.cn'+href

        sonweb = req.urlopen(href)
        content = sonweb.read()
        content = content.decode('utf-8')

        outfile = open(str(year)+"年录取分数网页.txt", 'w')
        outfile.write(content)
        outfile.close()

T4 数据分析—提取历年分数线的数据

来了,这个作业唯一想考你的题。
首先,本题介绍了正则表达式,难以理解的话可以多看几遍。
剩下的就是简单地列表操作,a p p e n d append a p p e n d和访问而已。
关键有一个去空格,h t m l html h t m l空格是nbsp,全角和半角用输入法打出来即可。


import urllib.request as req
import re

url = 'http://www.gotonudt.cn/site/gfkdbkzsxxw/lqfs/index.html'
webpage = req.urlopen(url)
webdata= webpage.read()
webdata = webdata.decode('utf-8')
def step4():

    for year in range(2014, 2017):
        datalist = []
        substr='国防科技大学'+str(year)+'年录取分数统计'
        index=webdata.find(substr)
        href=webdata[ index-80 : index-39 ]
        href='http://www.gotonudt.cn'+href
        webpage=req.urlopen(href)
        content=webpage.read().decode('utf-8')

        tables = re.findall(r'(.*?)', content, re.S)
        table = tables[0]

        rows = re.findall(r'(.*?)', table, re.S)

        for row in rows :
            datas = re.findall(r'(.*?)', row, re.S)
            datarow = []
            for i in datas :
                Ridx = i.find(r'')
                Lidx = i.rfind(r'>', 0, Ridx)
                mdl = i[Lidx + 1 : Ridx]
                mdl = mdl.strip()
                mdl = mdl.replace(' ', '')
                mdl = mdl.replace(' ', '')
                mdl = mdl.replace(' ', '')
                datarow.append(mdl)
            datalist.append(datarow)

        outfile=open(str(year)+'年out.txt','w')
        for rows in datalist:
            for cell in rows:
                outfile.write(cell+'\t')
            outfile.write('\n')
        outfile.close()

Original: https://blog.csdn.net/JZYshuraK/article/details/125343755
Author: JZYshuraK
Title: 【Educoder作业】※网页抓取及信息提取

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/729771/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • ubuntu20.04安装lightgbm的gpu版本

    install: Exception: Please install CMake and all required dependencies first 安装页面 有三条依赖环境:…

    Python 2023年9月9日
    070
  • Python爬虫——Scrapy中请求响应、crawlspider、middleware

    目录 一、Scapy中request * 基础知识 – request response 二、Scrapy中crawlspider * crawlspider的使用 实…

    Python 2023年10月2日
    066
  • 这几个Python数据可视化探索实例,拿走不谢

    推荐阅读:1、程序员用Python爬虫做副业半个月就赚了3W2、一个30岁的程序员无比挣扎的故事,连躺平都是奢望 利用可视化探索图表 一、数据可视化与探索图 数据可视化是指用图形或…

    Python 2023年8月30日
    048
  • numba优化踩坑记录

    众所周知,python的运行很慢。最近遇到一个需要中等频率处理百亿条数据的工作(还没办法直接用numpy的矩阵操作)。但我c++水平有限,加上读取、处理数据的API(ArcPy)只…

    Python 2023年8月29日
    043
  • 京准GPS北斗卫星校时系统助力南亚电子生产管理系统

    京准GPS北斗卫星校时系统助力南亚电子生产管理系统 京准GPS北斗卫星校时系统助力南亚电子生产管理系统 京准电子科技官微——ahjzsz 2022年3月中旬,我京准科技生产研发的G…

    Python 2023年10月26日
    038
  • MySQL高级SQL语句

    目录 一、常用查询 1、按关键字排序 1.1 前期准备 1.2 升序、降序列出数据 1.3 找出其中南京的数据并以分数降序列出 1.4 查询学生信息先按兴趣id降序排列,相同分数的…

    Python 2023年9月26日
    059
  • Scrapy爬虫之MongoDB数据存储

    小编学习python爬虫已有一段时间了,对Scrapy框架开发有自己的一点小见解,如果有说不对的地方,希望大家多多指点。小编用的是Python2.7,如果觉得版本太旧,也可以用3….

    Python 2023年10月3日
    034
  • 用python+django+pyecharts制作数据可视化大屏

    随着信息化技术在政府、企业管理上应用的进一步发展,大数据技术兴起,数据可视化大屏随之进进入大众视线。下面是用python+django+pyecharts实现大屏的演示。 1,vi…

    Python 2023年8月4日
    0113
  • 为什么方法断点那么慢

    原文一些IDE提供”方法断点”的功能,可以让断点调试看起来非常简洁,然而在调试过程中我们会发现调试反应时间很长,调试器的性能大大降低。在本文中,我会简单解释…

    Python 2023年10月18日
    071
  • win10/11 paddlepaddle2.3/2.2 之 匹配CUDA和Cudnn版本安装

    完整的安装方法参考我的博客如下:包括显卡驱动检测 选择安装,VS2015/17/19安装,CUDA11.2安装和配置,cudnn安装。还包括CUDA卸载方法 (27条消息) 202…

    Python 2023年9月7日
    060
  • backtrader的回测结果之Bokel quantstats backtrader_plotting btplotting

    backtrader 量化回测模块中 cerebro.plot()图像不是很方便使用,所以测试了很多作图相关的模块;总结:1.backtrader_bokeh这个应该是一种付费的模…

    Python 2023年8月13日
    076
  • 【matlab】解线性方程组的迭代方法

    (一)矩阵 特征 多项式、特征值、特征向量,稀疏矩阵 1、测试函数eig,poly,poly2str format short g A=[1 2 3;4 5 6;7 8 9] A …

    Python 2023年8月29日
    064
  • Selenium3自动化测试【38】单元测试Pytest(1)

    pytest测试框架也是主流的一个测试框架,推荐使用该框架,对比unnitest框架来说,其效率更高 1.Pytest介绍 pytest测试框架也是主流的一个测试框架,推荐使用该框…

    Python 2023年9月11日
    055
  • 利用conda批量安装包

    利用conda批量安装包 今天做事碰到这么一个 需求:我用的IDE是Spyder,包管理工具是conda,并且我已经在电脑A上把代码调通了,需要迁移到新电脑B上运行,怎么样快速配置…

    Python 2023年9月8日
    051
  • R-CNN系列目标检测算法对比

    引言 对比了R-CNN,Fast R-CNN,Faster R-CNN,Mask R-CNN目标检测算法的发展过程与优缺点。 R-CNN R-CNN是第一个成功第将深度学习应用到目…

    Python 2023年9月15日
    036
  • torch安装

    第n次安装了,每次都得结合很多篇才能安装成功,这次直接自己写一个。 一、安装anaconda 这个自己搜吧,挺简单的。 二、安装pytorch 进入anaconda prompt …

    Python 2023年8月2日
    096
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球