【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/
转载文章受原作者版权保护。转载请注明原作者出处!